This is a Library of PHP Modules for the home automation software "Symcon"
Overview
Modul hierarchy
Installation
- Github Modul URL:
- https://github.com/Tommi2Day/ipsymcon-phpmodule-by-Tommi.git
- Branch: 6.0
- Within Symcon Konsole go to Kern Instancen ->Modules
- Press "Hinzufügen" Button
- Enter Module Repository "https://github.com/Tommi2Day/ipsymcon-phpmodule-by-Tommi.git"
- Click on "Edit" Icon and change Branch(Zweig) to "6.0"
Devices
WSDEV
WSDEV :Generic Weather Sensor Device Modul
Displays depending of the capability of the connected sensor out of the following measures:
protected $capvars = array(
'Name'=>array("ident"=>'Name',"type"=>self::VT_String,"name"=>'Name','profile'=>'',"pos"=>0),
"Temp" => array("ident" => 'Temperatur', "type" => self::VT_Float, "name" => 'Temperatur', "profile" => 'Temperature', "pos" => 0),
"TempOffset" => array("ident" => 'TempOffset', "type" => self::VT_Float, "name" => 'Temperatur Offset', "profile" => 'Temperature', "pos" => 0,"hidden"=>true),
"TempMeasured" => array("ident" => 'TempMeasured', "type" => self::VT_Float, "name" => 'Temperatur measured', "profile" => 'Temperature', "pos" => 0,"hidden"=>true),
"Tist" => array("ident" => 'Tist', "type" => self::VT_Float, "name" => 'Temperatur Ist', "profile" => 'Temperature', "pos" => 1),
"Tsoll" => array("ident" => 'Tsoll', "type" => self::VT_Float, "name" => 'Temperatur Soll', "profile" => 'Temperature', "pos" => 1),
"Treduced" => array("ident" => 'Treduced', "type" => self::VT_Float, "name" => 'Temperatur reduced', "profile" => 'Temperature', "pos" => 1),
"Tcomfort" => array("ident" => 'Tcomfort', "type" => self::VT_Float, "name" => 'Temperatur comfort', "profile" => 'Temperature', "pos" => 1),
"WindowOpen" => array("ident" => "WindowOpen", "type" => self::VT_Boolean, "name" => 'Window Open', "profile" => '~Window', "pos" => 2),
"BoostActive" => array("ident" => "BoostActive", "type" => self::VT_Boolean, "name" => 'Boost active', "profile" => '', "pos" => 3),
"WindChill" => array("ident" => 'WindChill', "type" => self::VT_Float, "name" => 'Wind Chill', "profile" => 'Temperature', "pos" => 0),
"Hum" => array("ident" => 'Humidity', "type" => self::VT_Integer, "name" => 'Feuchte', "profile" => 'Humidity', "pos" => 1),
"Press" => array("ident" => 'Pressure', "type" => self::VT_Integer, "name" => 'Pressure', "profile" => 'AirPressure', "pos" => 2),
"Wind" => array("ident" => 'Windspeed', "type" => self::VT_Float, "name" => 'Wind Speed', "profile" => 'WindSpeed.kmh', "pos" => 3),
"WindGust" => array("ident" => 'WindGust', "type" => self::VT_Float, "name" => 'Wind Gust', "profile" => 'WindSpeed.kmh', "pos" => 3),
"WindDir" => array("ident" => 'WindDir', "type" => self::VT_Float, "name" => 'Wind Direction', "profile" => 'WindDirection.Text', "pos" => 4),
"Storm" => array("ident" => "Storm", "type" => self::VT_Boolean, "name" => 'Storm Indicator', "profile" => '', "pos" => 5),
"Rain" => array("ident" => "Rain", "type" => self::VT_Float, "name" => 'Rain', "profile" => 'Rainfall', "pos" => 6),
"RainHourly" => array("ident" => "RainHourly", "type" => self::VT_Float, "name" => 'Rain Hourly', "profile" => 'Rainfall', "pos" => 6),
"RainDaily" => array("ident" => "RainDaily", "type" => self::VT_Float, "name" => 'Rain this Day', "profile" => 'Rainfall', "pos" => 6),
"RainLastDay" => array("ident" => "RainLastDay", "type" => self::VT_Float, "name" => 'Rain last Day', "profile" => 'Rainfall', "pos" => 6),
"RainCounter" => array("ident" => "RainCounter", "type" => self::VT_Integer, "name" => 'Rain Counter', "profile" => '', "pos" => 7,"hidden" => true),
"IsRaining" => array("ident" => "IsRaining", "type" => self::VT_Boolean, "name" => 'Raining', "profile" => 'Raining', "pos" => 8),
"Light" =>array("ident" => 'Light', "type" => self::VT_Integer, "name" => 'Brightness', "profile" => 'Illumination', "pos" => 8),
"Forecast" => array("ident" => "Forecast", "type" => self::VT_Integer, "name" => 'Forecast', "profile" => '', "pos" => 9),
"Level" => array("ident" => "Level", "type" => self::VT_Float, "name" => 'Level', "profile" => '', "pos" => 9),
"Battery" => array("ident" => "Battery", "type" => self::VT_Boolean, "name" => 'Battery', "profile" => 'Battery.Reversed', "pos" => 10),
"BatteryPct" => array("ident" => "BatteryPct", "type" => self::VT_Integer, "name" => 'Battery percent', "profile" => 'Battery.100', "pos" => 10),
"Lost" => array("ident" => "Lost", "type" => self::VT_Integer, "name" => 'Lost Records', "profile" => '', "pos" => 11,"hidden" => true),
"UV" => array("ident" => "UV", "type" => self::VT_Integer, "name" => 'UV Index', "profile" => 'UVIndex', "pos" => 12),
'Signal' => array("ident" => 'Signal', "type" => self::VT_Integer, "name" => 'Signal', 'profile' => 'Signal', "pos" => 40,"hidden" => true),
"TS" => array("ident" => "TS", "type" => self::VT_Integer, "name" => 'Timestamp', "profile" => 'UnixTimestamp', "pos" => 41,"hidden" => true)
);
- Prefix: WSD_
- Properties
- DeviceID: ID/Serial of the connected Device. Will be matched when receiving Data
- Typ: Typ/Model of the Device, if available. Will be matched when receiving Data
- Class: Class of the creator. Will be matched when receiving Data
- Caplist; Keywords of actual capabilies for matching status variables, seperated by semicolon, set by splitter. Idents must match definitions in $capvars
- Standard Actions:
-
EnergyDev
EnergyDev :Generic Energy Sensor Device Modul
Displays depending of the capability of the connected sensor out of the following measures:
protected $capvars = array(
'Name' => array("ident" => 'Name', "type" => self::VT_String, "name" => 'Name', 'profile' => '', "pos" => 0),
"APower" => array("ident" => 'APower', "type" => self::VT_Float, "name" => 'Power Actual', "profile" => 'Power_W.3', "pos" => 1),
"TPower" => array("ident" => 'TPower', "type" => self::VT_Float, "name" => 'Power Total', "profile" => 'Electricity', "pos" => 1),
"PPower" => array("ident" => 'PPower', "type" => self::VT_Float, "name" => 'Power Peak', "profile" => 'Power_W.3', "pos" => 1),
"AGas" => array("ident" => 'AGas', "type" => self::VT_Float, "name" => 'Gas Actual', "profile" => 'Gas', "pos" => 1),
"TGas" => array("ident" => 'TGas', "type" => self::VT_Float, "name" => 'Gas Total', "profile" => 'Gas', "pos" => 1),
"PGas" => array("ident" => 'PGas', "type" => self::VT_Float, "name" => 'Gas Peak', "profile" => 'Gas', "pos" => 1),
"AWasser" => array("ident" => 'AWasser', "type" => self::VT_Float, "name" => 'Wasser Actual', "profile" => 'Water', "pos" => 1),
"TWasser" => array("ident" => 'TWasser', "type" => self::VT_Float, "name" => 'Wasser Total', "profile" => 'Water', "pos" => 1),
"PWasser" => array("ident" => 'PWasser', "type" => self::VT_Float, "name" => 'Wasser Peak', "profile" => 'Water', "pos" => 1),
"Amp" => array("ident" => 'Amp', "type" => self::VT_Float, "name" => 'Ampere', "profile" => '~Ampere.16', "pos" => 2),
"Counter" => array("ident" => 'Counter', "type" => self::VT_Integer, "name" => 'Counter', "profile" => '', "pos" => 2,"hidden" => true),
"OCounter" => array("ident" => 'OCounter', "type" => self::VT_Integer, "name" => 'Counter Offset', "profile" => '', "pos" => 2, "hidden" => true),
"ACounter" => array("ident" => 'ACounter', "type" => self::VT_Integer, "name" => 'Current Counter', "profile" => '', "pos" => 2, "hidden" => true),
"PCounter" => array("ident" => 'PCounter', "type" => self::VT_Integer, "name" => 'Peak Counter', "profile" => '', "pos" => 2, "hidden" => true),
'VoltBatt' => array("ident" => 'VoltBatt', "type" => self::VT_Float, "name" => 'Batterie Volt', 'profile' => 'Volt', "pos" => 4),
"VoltIn" => array("ident" => 'VoltIn', "type" => self::VT_Float, "name" => 'Voltage Input', "profile" => 'Volt.230', "pos" => 4),
"VoltOut" => array("ident" => 'VoltOut', "type" => self::VT_Float, "name" => 'Voltage Output', "profile" => 'Volt.230', "pos" => 5),
"Freq" => array("ident" => 'Freq', "type" => self::VT_Float, "name" => 'Frequency', "profile" => 'Hertz.50', "pos" => 6),
'LoadPct' => array("ident" => 'LoadPct', "type" => self::VT_Integer, "name" => 'Load', 'profile' => 'Battery.100', "pos" => 8),
'Charged' => array("ident" => 'Charged', "type" => self::VT_Integer, "name" => 'Charged', 'profile' => 'Battery.100', "pos" => 7),
'Nominal' => array("ident" => 'Nominal', "type" => self::VT_Float, "name" => 'Nominal Load', 'profile' => 'Watt.3680', "pos" => 9,"hidden" => true),
'Watt' => array("ident" => 'Watt', "type" => self::VT_Float, "name" => 'Watt', 'profile' => 'Watt.3680', "pos" => 9),
'TimeLeft' => array("ident" => 'TimeLeft', "type" => self::VT_Float, "name" => 'Time Left', 'profile' => 'Time.min', "pos" => 10),
'Status' => array("ident" => 'Status', "type" => self::VT_String, "name" => 'Status', 'profile' => '', "pos" => 11),
'Alert' => array("ident" => 'Alert', "type" => self::VT_Boolean, "name" => 'Alert', 'profile' => 'Alert.Reversed', "pos" => 12),
"Battery" => array("ident" => "Battery", "type" => self::VT_Boolean, "name" => 'Battery', "profile" => 'Battery.Reversed', "pos" => 13,"hidden" => true),
'Signal' => array("ident" => 'Signal', "type" => self::VT_Integer, "name" => 'Signal', 'profile' => 'Signal', "pos" => 40,"hidden" => true),
"TS" => array("ident" => "TS", "type" => self::VT_Integer, "name" => 'Timestamp', "profile" => 'UnixTimestamp', "pos" => 41,"hidden" => true)
);
- Properties
- DeviceID: ID/Serial of the connected Device. Will be matched when receiving Data
- Typ: Typ/Model of the Device, if available. Will be matched when receiving Data
- Class: Class of the creator. Will be matched when receiving Data
- Caplist; Keywords of actual capabilies for matching status variables, seperated by semicolon, set by splitter. Idents must match definitions in $capvars
- Standard Actions (if supported by the attached splitter and the physical device)
-
SwitchDev
SwitchDev :Generic Device module to present weather data
Displays depending of the capability of the connected sensor out of the following measures:
protected $capvars = array(
'Name' => array("ident" => 'Name', "type" => self::VT_String, "name" => 'Name', 'profile' => '', "pos" => 0),
"Switch" => array("ident" => 'Switch', "type" => self::VT_Boolean, "name" => 'Status', "profile" => 'Switch', "pos" => 1),
"SimpleSwitch" => array("ident" => 'SimpleSwitch', "type" => self::VT_Boolean, "name" => 'Status', "profile" => 'Switch', "pos" => 1),
"LevelPct" => array("ident" => 'LevelPct', "type" => self::VT_Integer, "name" => 'Level %', "profile" => 'Intensity.100', "pos" => 2),
"Level" => array("ident" => 'Level', "type" => self::VT_Integer, "name" => 'Level', "profile" => 'Intensity.255', "pos" => 2),
"ColorSat" => array("ident" => 'ColorSat', "type" => self::VT_Integer, "name" => 'Color Saturation', "profile" => 'Intensity.100', "pos" => 3),
"ColorHue" => array("ident" => 'ColorHue', "type" => self::VT_Integer, "name" => 'Color Hue (Grd)', "profile" => '', "pos" => 3),
"ColorTemp" => array("ident" => 'ColorTemp', "type" => self::VT_Integer, "name" => 'Color Temp', "profile" => '~TWColor', "pos" => 3),
"Dimmer" => array("ident" => 'Dimmer', "type" => self::VT_Integer, "name" => 'Dimmer', "profile" => 'Intensity.100', "pos" => 2),
"Shutter" => array("ident" => 'Shutter', "type" => self::VT_Integer, "name" => 'Shutter', "profile" => 'Shutter', "pos" => 2),
"BlindEndPos" => array("ident" => 'BlindEndPos', "type" => self::VT_Integer, "name" => 'Blind Pos', "profile" => 'Shutter', "pos" => 2),
"BlindMode" => array("ident" => 'BlindMode', "type" => self::VT_String, "name" => 'Blind Mode', "profile" => '', "pos" => 2),
"Timer" => array("ident" => 'Timer', "type" => self::VT_Integer, "name" => 'Timer', "profile" => '', "pos" => 3),
'TimerActionCode' => array("ident" => 'TimerActionCode', "type" => self::VT_String, "name" => 'next Timer Action', "profile" => '', "pos" => 3, "hidden" => true),
"FS20" => array("ident" => 'FS20', "type" => self::VT_String, "name" => 'last FS20 code', "profile" => '', "pos" => 4,"hidden" => true),
"Lock" => array("ident" => 'Lock', "type" => self::VT_Boolean, "name" => 'Locked', "profile" => 'Lock', "pos" => 5),
"Alert" => array("ident" => 'Alert', "type" => self::VT_Boolean, "name" => 'Alarm', "profile" => 'Alert.Reversed', "pos" => 5),
"Battery" => array("ident" => "Battery", "type" => self::VT_Boolean, "name" => 'Battery', "profile" => 'Battery.Reversed', "pos" => 10),
"BatteryPct" => array("ident" => "BatteryPct", "type" => self::VT_Integer, "name" => 'Battery percent', "profile" => 'Battery.100', "pos" => 10),
'Signal' => array("ident" => 'Signal', "type" => self::VT_Integer, "name" => 'Signal', 'profile' => 'Signal', "pos" => 40,"hidden" => true),
"TS" => array("ident" => "TS", "type" => self::VT_Integer, "name" => 'Timestamp', "profile" => 'UnixTimestamp', "pos" => 41,"hidden" => true)
);
- Prefix: SWD_
- Properties
- DeviceID: ID/Serial of the connected Device. Will be matched when receiving Data
- Typ: Typ/Model of the Device, if available. Will be matched when receiving Data
- Class: Class of the creator. Will be matched when receiving Data
- CapList; Keywords of actual capabilies for matching status variables, seperated by semicolon, set by splitter. Idents must match definitions in $capvars. If the standard action for the matching status variable should be enable the Splitter should append ":1" to the capability to be send when creating an instance.
IPS_SetProperty($id,'CapList','Switch:1;Timer;Dimer:1;');
- Standard Actions:
- (if supported by the attached splitter and the physical device. The Splitter must set the action flag in CapList property, see caplist)
- Switch Status
- Dimmer Intensity
- Timer
- Public Functions:
- SetSwitchMode: raise a switch command
SWD_SetSwitchMode($id,$newstate);
- DimUp: Raise the level of dimmer one step (up to 100%)
- DimDown : Lower the level of dimmer one step (down to 0%)
- SetIntensity : Set the dimming Level in percent
SWD_SetIntensity($id,$percent);
- SetDuration : (FS20 via CUL only) Switch to the given or opposite current state and reverse after time expires
SWD_SetDuration($id,$seconds,$action=null);
Splitter
WS300PC
WS300PC Splittermodul for reading ELV WS300PC Datalogger. The Logger will be accessed via USB serial port.
- Supported Devices:
- The logger supports 8 external T/H WS300 Series Sensor (S300TH,PS50), one KS300 Kombisensor (T/H, Wind, Rain) and the internal Indoor Sensor (T/H, Pressure, Forecast(Willi) Indicator).
- Data Handling:
- The Data will be presented as Weather Device instances
- Prefix: WS300PC_
- Properties
- Active (Default: Off/Inactive):
- Category (Default 'WS300PC Devices'): name of category for subsequent devices
- Logfile (Default none): optional fully qualified filename of a logfile. File will be in csv format with one line per sensor. Header will be in the first line
- AutoCreate (Default: On/True): Flag to allow autocreation of new Device Instances below Category
- Debug: Flag to enable debug output via IPS_LogMessages
- ParentCategory (Default 0): ID of parent category for newly created category
- RainPerCount (Default 295): How much rain will be added for one count (mm/1000), Range: 200-500
- Altitude (Default 0): Altitude of location for pressure correction, Range: -130 - 8000
- ReadInterval (Default 5): internal Logging interval in min, Range: 5-30
- Public Functions:
- Update: manual data refresh
- Get_Version: Returns WS300PC firmware version. Usefull for testing communication
- ReadCurrentRecord($id): Read current Record from WS300PC
WS300PC_ReadCurrentRecord($id);
- WS300PC_ReadNextRecord($id): Read and delete oldest available historic record.
WS300PC_ReadNextRecord($id);
Reading all historic records at once will take a lot of time and exeeds usually max_execution_time. But you can execute it from outside of symcon using JSON API. see ws300pc_history.pl for an example.
WDE1
WDE1 Splittermodul for reading ELV WDE1 Datalogger. The Logger will be accessed via serial port.
- Warning
- This module is deprecated/unsupported as of 2017. I dont have this anymore.
- Supported Devices:
- The Logger supports 8 external T/H WS300 Series Sensor (T/H WS300Sensor (S300TH,PS50)) and one KS300 Kombisensor (T/H, Wind, Rain).
- Data Handling:
- The Data will be presented as Weather Device instances
- Prefix: WDE1_
- Properties
- Active (Default: Off/Inactive):
- Category (Default 'WDE1 Devices'): name of category for subsequent devices
- ParentCategory (Default 0): ID of parent category for newly created category
- RainPerCount (Default 295): How much rain will be counted for one count (mm/1000), Range: 200-500
- Logfile (Default none): optional fully qualified filename of a logfile. File will be in csv format with one line per sensor. Header will be in the first line
- AutoCreate (Default: On/True): Flag to allow autocreation of new Device Instances below Category
- Public Functions:
-
- See also
- http://www.elv.de/output/controller.aspx?cid=74&detail=10&detail2=44549
FS20WUE
FS20WUE Splittermodul for reading ELV FS20WUE Receiver. The Receiver will be accessed via serial port provides WS300 Series Weather and FS20 Data records.
- Warning
- This module is deprecated/unsupported as of 2017. I dont have this anymore.
- Supported Devices:
- Weather: The Receiver supports 8 external T/H WS300 Series Sensor (T/H WS300Sensor (S300TH,PS50)) and one KS300 Kombisensor (T/H, Wind, Rain).
- FS20: reading of ELV FS20 telegrams for Switch devices, but cannot control such device.
- Data Handling:
- Weather: The Data will be presented as Weather Device instances
- FS20: The Data will be presented as Switch instances. FS20 codes will be transformed
- Prefix: WUE_
- Properties
- Active (Default: Off/Inactive):
- Category (Default 'FS20WUE Devices'): name of category for subsequent devices
- ParentCategory (Default 0): ID of parent category for newly created category
- RainPerCount (Default 295): How much rain will be counted for one count (mm/1000), Range: 200-500
- Logfile (Default none): optional fully qualified filename of a logfile. File will be in csv format with one line per sensor. Header will be in the first line
- AutoCreate (Default: On/True): Flag to allow autocreation of new Device Instances below Category
- Public Functions:
-
- See also
- http://www.elv.de/fs20-und-wetterdaten-uart-empfaenger-fs20-wue-komplettbausatz.html
AVMAHA
AVMAHA :Splitter for AVM Smarthome Devices. Reads AVM AHA Smarthome Services from Fritz!OS (Ftritz!Box etc.) via http
- supported Devices:
- Fritz Powerline 546E
- Fritz Dect200 Switch: need FritzOS6.20+ for Temperature, 6.98 for Voltage
- Fritz Repeater 100: need FritzOS6.50+
- Fritz Dect301 Heating: show Temperature and battery, no heating control implemented, need FritzOS 7.08+
- Fritz Dect400 Button: lastpressed Timestamp as SwitchDev and Batttery), need FritzOS 7.08+
- Data Handling:
- Power measures will be displayed in an Energey Device instance
- Temperature mesures will be displayed in a Weather Sensor Device instance
- Switch status will be displayed in a Switch Device instance. Changes on the status will be transmitted to the connected actor
- Prefix: AHA_
- Properties
- Active (Default: Off/Inactive):
- Category (Default 'AVM SmartHome Devices on $hostname'): name of category for subsequent devices
- ParentCategory (Default 0): ID of parent category for newly created category
- UpdateInterval (Default 60): Query Interval in sec
- Host (default fritz.box): Hostname or IP of AHA Server
- User (default none): Username for Frotz!OS login (if required)
- Password (default none): Password for Fritz!OS Login
- AutoCreate (Default: On/True): Flag to allow autocreation of new Device Instances below Category
- Public Functions:
- Query: manual data refresh
- Actions:
- Switching of capable Devices like DECT!200 and Fritz!Powerline 546. Changes on status will be transmitted to the connected actor
TE923
TE923 :Splitter for TE923 based weather stations (TFA Nexus,Ventus 831, Mebus 923 etc) using TE923con output
- Supported Devices:
- 5 external Temp/Hum Sensors(1-5), Rain, Wind, UV(not seen yet) and the internal indoor Sensor
- Data Handling:
- The Data will be presented as Weather Device instances
- Prefix: TE923_
- Properties
- Active (Default: Off/Inactive):
- Category (Default 'TE923 Devices'): name of category for subsequent devices
- ParentCategory (Default 0): ID of parent category for newly created category
- URL: URL to query TE923con
- AutoCreate (Default: On/True): Flag to allow autocreation of new Device Instances below Category
- Logfile (Default none): optional fully qualified filename of a logfile.
- Public Functions:
- Query: manual data refresh
- Simple CGI Script to retrieve data:
- This requires a running webservice providing output from te923con binary. The following simple get_data.cgi script to be placed in your webservers cgi-bin directory is sufficient
#!/bin/bash
#header content type end empty line
echo "Content-type: text/plain"
echo
#end header
#parameter
PARAM="${QUERY_STRING:-$1}"
#run
if [ -x $TE923 ]; then
#binary must be placed into same dir
#this runs only if apache user www-data is member of group plugdev
#and udev rule is added
case "$PARAM" in
data) $TE923 -i 'i';;
status) $TE923 -s -i 'i';;
debug) $TE923 -D -i 'i';;
version) $TE923 -v;;
esac
fi
TE923 Gateway IPSymcon PHP Splitter Module Class.
Definition: module.php:25
- Web Server configuration (example Raspbian Stretch):
- The webserver must support cgi execution. On Raspbian (stretch) install apache2 and enable cgi and cgid mods. You have to install a udev rule to permit the webserver user access to usb
apt install apache2
systemctl enable apache2
a2enmod cgi cgid
a2enconf serve-cgi-bin
adduser www-data plugdev
cat >/etc/udev/rules.d/99-te923.rules <<EOF
ATTRS{idVendor}=="1130", ATTRS{idProduct}=="6801", MODE="0660", GROUP="plugdev", RUN="/bin/sh -c 'echo -n $id:1.0 > /sys/bus/usb/drivers/usbhid/unbind'"
EOF
udevadm control --reload-rules
#reboot to activate changes
reboot
WS2500PC
WS2500PC :Splitter for WS2500PC Receiver of WS2000 based Sensors using ws2500 binary output
- Warning
- This module is deprecated/unsupported as of 2022.
- Supported Devices:
- 8 external Temp/Hum Sensors(1-8), Rain, Wind, UV(not seen yet),Light(Brighness) and the Indoor Sensor with Temp/Hum and Pressure
- Data Handling:
- The Data will be presented as Weather Device instances
- Prefix: WS2500PC_
- Properties
- Active (Default: Off/Inactive):
- Category (Default 'WS2500PC Devices'): name of category for subsequent devices
- ParentCategory (Default 0): ID of parent category for newly created category
- URL: URL to query ws2500 cgi eg. http://raspberry/cgi-bin/get_ws2500_data.cgi
- RainPerCount (Default 295): How much rain will be added for one count (mm/1000), Range: 200-500
- AutoCreate (Default: On/True): Flag to allow autocreation of new Device Instances below Category
- Logfile (Default none): optional fully qualified filename of a logfile.
- Public Functions:
- Query: manual data refresh
- Hint:
- This requires a running webservice providing output from ws2500 binary. The following simple get_ws2500_data.cgi script to be placed in your webservers cgi-bin directory along ws2500 binary is sufficient The webserver must support cgi execution. On Raspbian (stretch) install apache2 and enable cgi and cgid mods
apt install apache2
a2enmod cgi cgid
a2enconf serve-cgi-bin
systemctl stop apache2
systemctl start apache2
#!/bin/bash
WS2500=./ws2500
#header content type end empty line
echo "Content-type: text/plain"
echo
#end header
#parameter
PARAM="${QUERY_STRING:-$1}" #oder $1
#run
if [ -x $WS2500 ]; then
#binary must be placed into same dir
#this runs only if apache user www-data is member of group plugdev
#and udev rule is added
case "$PARAM" in
data) $WS2500 -n -t -C /tmp/lastValues.txt -p /dev/ttyS0 |tee -a ws2500.dat;; #this will read all new records
status) $WS2500 -s -p /dev/ttyS0 ;;
debug) $WS2500 -g -D -C /tmp/lastValues.txt -p /dev/ttyS0 ;;
version) $WS2500 -v;;
esac
fi
- See also
- http://userpages.uni-koblenz.de/~krienke/en/component/content/article?id=14:weather-en
NUT
NUT : Splitter modul to query a NUT daemon for attached UPS/USV via Socket
- supported Devices:
- Any via NUT accessible UPS/USV.
- Data Handling:
- The Data will be presented as Energy Device instances
- Prefix: NUT_
- Properties
- Active (Default: Off/Inactive):
- Category (Default 'NUT Devices'): name of category for subsequent devices
- ParentCategory (Default 0): ID of parent category for newly created category
- Host: Host to query remote NUT deamon
- Port (Default:3493): Port to query remote NUT deamon
- UPSname Name of UPS as set in NUT configuration. This identifies the USV if there are more than one attached. May be empty, then it will take the first UPS as shown by LIST UPS command
- IDfield (default ups.serial) NUT field which holds the UPS identifier
- NomPower (default 100) the 100% load value in Watt. An USV which provides "ups.realpower.nominal" will set this value as property only if the previous value is default
- AutoCreate (Default: On/True): Flag to allow autocreation of new Device Instances below Category
- Logfile (Default none): optional fully qualified filename of a logfile.
- Public Functions:
- Query: manual data refresh
- Hint:
- The DeviceID should be supplied via ups.serial field. The Status Variable refers to the ups.status field. For explanation see http://networkupstools.org/documentation.html
APCUPSD
APCUPSD : Splitter modul to query a APCUPSD daemon for attached UPS/USV via Socket
- supported Devices:
- Any via APCUPSD accessible UPS/USV.
- Data Handling:
- The Data will be presented as Energy Device instances
- Prefix: APCUPSD_
- Properties
- Active (Default: Off/Inactive):
- Category (Default 'APCUPSD Devices'): name of category for subsequent devices
- ParentCategory (Default 0): ID of parent category for newly created category
- Host: Host to query remote APCUPSD deamon
- Port (Default:3551): Port to query remote APCUPSD deamon
- AutoCreate (Default: On/True): Flag to allow autocreation of new Device Instances below Category
- Logfile (Default none): optional fully qualified filename of a logfile.
- Public Functions:
- Query: manual data refresh
- Hint:
- The DeviceID should be supplied via ups.serial field. The Status Variable refers to the ups.status field. For explanation see http://networkupstools.org/documentation.html
CUL
CUL : IPSymcon PHP Splitter Module to receives Data from a CULFW driven tranceiver gadget like Busware
These devices receives and decodes a lot of common smarthome protocols used by ELV Sensors and devices.
- Warning
- This module is deprecated/unsupported as of 2022. I dont have this anymore.
- Supported Busware Devices: CUL,CUN,CUNO,COC
- decoded Protocols
- ELV EM1000 Energy Messures EM-WZ, EM-GZ and EMEM
- ELV FS20: Any contact sensor and switch actor. Dimmer are implemented, but because lack of such device untested
- ELV HMS: HMS100T(also used as Emulation for connected 1Wire DS1820 Sensors), HMS100TF,HMS100-TFK ...
- ELV WS300: S300TH,PS50,KS300 Weather Sensors
- ELV FHT: TFK Window opening Sensor only. FHT Heating Controls like FHT80b are not implemented!
- ELV ESA: some of the Energy Sensors. see source code. Untested!
- Data Handling:
- Power measures will be displayed in an Energey Device instance Temperature mesures will be displayed in a Weather Sensor Device instance Switch status will be displayed in a Switch Device instance. Changes on the status will be transmitted to the connected actor
- Actions:
- Switching of FS20 Devices. Changes on status will be transmitted to the connected actor
- Prefix: CUL_
- Hint
- Receivers may be connect to a serial port or client socket instance. You must create such one for your CUL instance as parent for yourself.
- device learning
Its important for the proper creation of IPS devices these must be received from the CUx Splitter instead of manually created. Only this ensures a set of valid parameters. As example a FS20 dimming device must be created by receiving a dimming command apply the dimming functions, otherwise it will left as a switch. You may use your remote control or a learning procedure for this. as an alternative, you may create a valid CUL response string and send this manually to the CUL splitter. This procedure is described in this forum entry https://www.symcon.de/forum/threads/31352-neue-PHP-Module-als-Ersatz-meiner-Delphi-Module?p=303129#post303129 (in german)
- See also
- http://culfw.de/commandref.html for valid CUL response strings
OWNet
OWN: The OWNet Splitter will query a OWServer via OWNet daemon for attached 1Wire sensors
- Prefix: OWN_
- Properties
- Active (Default: Off/Inactive):
- Category (Default 'OWNet Devices'): name of category for subsequent devices
- ParentCategory (Default 0): ID of parent category for newly created category
- Host: Host to query remote OWNet daemon
- Port (Default:4304): Port to query remote OWNet daemon
- UpdateInterval (Default:300): Refresh interval in sec
- Timeout (Default:10): Read Timeout
- AutoCreate (Default: On/True): Flag to allow autocreation of new Device Instances below Category
- Actions (if supported by the attached splitter and the physical device)
- See also
- http://owfs.org/index.php?page=owserver
-
http://owfs.org/index.php?page=ownet-php
-
http://owfs.org/index.php?page=standard-devices
XS1
XS1: The XS1 Splitter queries an Ezcontrol XS1 Homeautomation Receiver/Controler
- Warning
- This module is deprecated/unsupported as of 2017. I dont have this anymore.
- Prefix: XS1_
- Properties
- Active (Default: Off/Inactive):
- Category (Default 'OWNet Devices'): name of category for subsequent devices
- ParentCategory (Default 0): ID of parent category for newly created category
- Host: Host to query remote OWNet daemon
- Port (Default:4304): Port to query remote OWNet daemon
- AutoCreate (Default: On/True): Flag to allow autocreation of new Device Instances below Category
- Actions (if supported by the attached splitter and the physical device)
- Switching of attached actors
- See also
- vendor docs on http://www.ezcontrol.de/content/view/36/28/ (german)
MQTTPUB
MQTTPUB: IOModule to publish IPS Variable updates to an MQTT brocker
- Prefix: MQTTPUB_
The module allows subscriptions to IPS Variable update messages and forwards this as json record to a MQTT broker. An external client may subscribe to these broker messages and proceed further
- Properties
- Active (Default: Off/Inactive):
- Host MQTT Broker Host/IP to connect
- Port (Default:1883): MQTT Broker Port to connect
- Topic (Default 'IPS/status/varid%/varident%/path'): Topic pattern to pass to broker (see below)
- ClientID (Default 'symcon'): $ClientID$host will be used wenn connecting to broker
IPS_SetProperty only:
- User (Default empty)
- Password (Default empty)
- Subscriptions Json array string with registered subscriptions. To register subscriptions pls use public functions only
- Actions
- Public Functions:
- MQTTPUP_Publish($id,$varid): trigger immediately publishing variable $varid to the broker
- MQTTPUB_Subscribe($id,$varid): Subscribes VM_UPDATE messages for variable $varid on IPS Messageloop
- MQTTPUB_UnSubscribe($id,$varid): UnSubscribes VM_UPDATE messages for variable $varid from IPS Messageloop
- MQTTPUB_Subscribe_All($id,$objectid,$ident=null): Subscribes all variable IDs below $objectid to IPS Messageloop, optionally only thus equal which supplied ident
- MQTTPUB_UnSubscribe_ALL($id,$objectid,$ident=null): UnSubscribes all variable IDs below $objectid from IPS Messageloop, optionally only thus equal which supplied ident
- Data Handling
- Topic:
- Payload is a Json string with the following components:
A sample consumer script ips_mqtt2db.py for logging into a mysql database is provided
Debug:
By activating the Instance Debug Tab a lot of noise will appear
general documentation