Machine status from domoticz

This is how I solved it!

The script that show status on homepage.

echo "<b>Machine status</b>";
echo "</br>";
$arr = array(5, 7, 9);
foreach ($arr as &$value) {
$get_data = "".$value;
$result = file_get_contents($get_data);
$decode = json_decode($result,true);
	if ($decode["result"][0]["Value"] == "1"){
	$icon = "green-icon.png";
	else {
	$icon = "red-icon.png";
switch ($decode['result'][0]['Name']) {
    case "washingmachine_status":
        $unit = "Washing machine";
    case "dryer_status":
        $unit = "Dryer";
    case "dishwasher_status":
        $unit = "Dishwasher";
	echo "</br>     " . $unit . "</br><img src=\"/wp-content/uploads/2015/12/" . $icon . "\"><em>" . $decode['result'][0]['LastUpdate'] . "</em><br>";

The script that check my machines.

--This script monitors the current consumption indicated by a Z-Wave plug, placed between the washingmachine and the mains outlet
--It will count the amount of time that the power usage is below the triggervalue to be configured below. This indicates us that the washer has finished.
--When the script thinks the washingmachine is done, it will send you a pushnotification (line #38)</code>
--Change the values below to reflect to your own setup
local switch_washingmachine = 'virt_wasmachine' --Name of virtual switch that will show the state of the washingmachine (on/off)
local washer_status_uservar = 'washingmachine_status'
local energy_consumption = 'Wasmachine' --Name of Z-Wave plug that contains actual consumption of washingmachine (in Watts)
local washer_counter_uservar = 'washingmachine_counter' --Name of the uservariable that will contain the counter that is needed
local idle_minutes = 5 --The amount of minutes the consumption has to stay below the 'consumption_lower' value
local consumption_upper = 20 --If usage is higher than this value (Watts), the washingmachine has started
local consumption_lower = 3 --If usage is lower than this value (Watts), the washingmachine is idle for a moment/done washing
sWatt, sTotalkWh = otherdevices_svalues[energy_consumption]:match("([^;]+);([^;]+)")
washer_usage = tonumber(sWatt)
commandArray = {}
--Virtual switch is off, but consumption is higher than configured level, so washing has started
if (washer_usage &gt; consumption_upper) and uservariables[washer_status_uservar] == 0 then
commandArray['Variable:' .. washer_status_uservar]='1'
print('Current power usage (' ..washer_usage.. 'W) is above upper boundary (' ..consumption_upper.. 'W), so washing has started!')
commandArray['Variable:' .. washer_counter_uservar]=tostring(idle_minutes)
if (washer_usage &lt; consumption_lower) and uservariables[washer_status_uservar] == 1 then --Washing machine is not using a lot of energy, subtract the counter
commandArray['Variable:' .. washer_counter_uservar]=tostring(math.max(tonumber(uservariables[washer_counter_uservar]) - 1, 0))
print('Current power usage (' ..washer_usage.. 'W) is below lower boundary (' ..consumption_lower.. 'W), washer is idle or almost ready')
print('Subtracting counter with 1, new value: ' ..uservariables[washer_counter_uservar].. ' minutes')
--Washingmachine is done
if ((uservariables[washer_status_uservar] == 1) and uservariables[washer_counter_uservar] == 0) then
print('Washingmachine is DONE')
print('Current power usage washingmachine ' ..washer_usage.. 'W')
print('Washingmachine is done, please go empty it!')
commandArray['SendNotification']='Washingmachine#Washingmachine is done, please go empty it!#0' --Use Domoticz to send a notification, replace line for your own command if needed.
commandArray['Variable:' .. washer_status_uservar]='0'
return commandArray

Leave a Reply