PHP Modules by Tommi2Day 7.0
Modules for Symon
Loading...
Searching...
No Matches
Index

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: 7.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 "7.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), //reversed state
"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:
  • None

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 based
"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),
//usv
'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)
  • None

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%)
    SWD_DimUp($id);
  • DimDown : Lower the level of dimmer one step (down to 0%)
    SWD_DimDown($id);
  • 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.

Warning
This module is deprecated/unsupported as of 2022. I dont have this anymore.
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
    WS300PC_Update($id);
  • Get_Version: Returns WS300PC firmware version. Usefull for testing communication
    WS300PC_GetVersion($id);
  • 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:
  • None
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:
  • None
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
    AHA_Query($id);
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

Warning
This module is deprecated/unsupported as of 2023. I dont have this anymore.
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
    TE923_Query($id);
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
TE923=./te923con
#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
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
    WS2500PC_Query($id);
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
    NUT_Query($id);
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
    APCUPSD_Query($id);
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)
  • None
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
  • None
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:
    • Topic may be configured with config dialog window. You may set template variables within definition IPS/status/varid%/varident%/path%/varname

      will result in

      IPS/status/42440/Watt/APCUPSD_Devices/Back-UPS_RS_900G/Watt
  • Payload is a Json string with the following components:
    • Path: IPS tree of names from root to the variable
    • TS: Unix Timestamp message received in MQTTPUB module
    • UTF8Value: stringyfied actual value of variable
    • VariableChanged: VariableChange Field of variable object
    • VariableIdent: Ident of variable
    • VariableType: VariableType Field of variable object
    • VariableUpdated: VariableUpdated Field of variable object

      Sample:

      {'Path': 'APCUPSD Devices/Back-UPS RS 900G/Watt',
      'TS': 1477132802,
      'UTF8Value': '124',
      'VariableChanged': 1477132502,
      'VariableID': 42440,
      'VariableIdent': 'Watt',
      'VariableType': 2,
      'VariableUpdated': 1477132802}

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