Styra domoticz enheter från nexahome

Moderators: hekj, Telldus

Post Reply
XamDam
Posts: 10
Joined: Fri Mar 17, 2023 9:45 am

Styra domoticz enheter från nexahome

Post by XamDam »

Om jag klistrar in denna url i en webläsare så tänder jag en lampa kopplad via z-wave i domoticz:

http://192.168.0.253:8080/json.htm?type ... itchcmd=On

och

http://192.168.0.253:8080/json.htm?type ... tchcmd=Off

släcker samma lampa.

Hur får jag det att funka från ett script i nexahome? Jag har ett tidigare script som tar in en fjärrkontroll för att sedan tända och släcka lampor som ser ut så här:

if (deviceIsOn("46") && !executedByCmd()) {
echo("Nu är det kväll");
deviceOn("203");
deviceOn("13");
deviceOn("33");
deviceOn("36");
deviceOn("37");
}

if (deviceIsOff("46") && !executedByCmd()) {
echo("Nu är det sovdags");
deviceOff("203");
deviceOff("13");
deviceOff("33");
deviceOff("36");
deviceOff("37");
}

Hur lägger man till den där jsonAPI grejen i scriptet.

Tack på förhand
hekj
Posts: 992
Joined: Fri Mar 17, 2023 9:45 am
Location: Stockholm
Contact:

Re: Styra domoticz enheter från nexahome

Post by hekj »

XamDam wrote:Om jag klistrar in denna url i en webläsare så tänder jag en lampa kopplad via z-wave i domoticz:

http://192.168.0.253:8080/json.htm?type ... itchcmd=On

och

http://192.168.0.253:8080/json.htm?type ... tchcmd=Off

släcker samma lampa.

Hur får jag det att funka från ett script i nexahome?
Hämta följande fil och lägg ner den i NexaHome foldern.
http://nexahome.se/BshAddOn.jar

Testa sedan att exekvera en bsh fil med följande innehåll.

turn_on_06.bsh

Code: Select all

addClassPath("C:/apps/nexahome/BshAddOn.jar");
cmd_on="http://192.168.0.253:8080/json.htm?type=command&param=switchlight&idx=06&switchcmd=On";
page = BshAddOn.fetchWebContent(cmd_on, null, null);
if (page != null) {
   echo(page);
}
XamDam
Posts: 10
Joined: Fri Mar 17, 2023 9:45 am

Re: Styra domoticz enheter från nexahome

Post by XamDam »

Tack, detta verkar som om det funkar ok. Det enda kruxet verkar vara att i loggfilerna på Domoticz så verkar det som om det skickas uppemot 6 st tillslag vid varje tillfälle.
Så här ser switchloggen ut:
2016-02-08 15:59:21 On
2016-02-08 15:59:20 On
2016-02-08 15:59:19 On
2016-02-08 15:59:13 On
2016-02-08 15:59:12 On
2016-02-08 15:59:11 On
2016-02-08 09:16:04 On
2016-02-08 09:16:04 On
2016-02-08 09:16:04 On
2016-02-07 23:36:04 Off
2016-02-07 23:36:04 Off
2016-02-07 23:36:03 Off
2016-02-07 23:32:06 Off
2016-02-07 23:32:06 Off
2016-02-07 23:32:06 Off
2016-02-07 23:32:05 Off
2016-02-07 15:56:18 On
2016-02-07 15:56:18 On
2016-02-07 15:56:16 On
2016-02-07 15:56:13 On
2016-02-07 15:56:13 On
2016-02-07 15:56:11 On

Det jag gjort är att jag skapat ett antal dummymottagare i tellduscenter och styr dom med nexahome. När en lampa tänds så utförs följande script,

addClassPath("C:/nexahome/BshAddOn.jar");

echo("Script 53");

if (deviceIsOn("53") && !executedByCmd() ) {
echo("Nu är det kväll");
page = BshAddOn.fetchWebContent("http://192.168.0.253:8080/json.htm?type ... itchcmd=On", null, null);
}

if (deviceIsOff("53") && !executedByCmd()) {
echo("Nu är det sovdags");
page = BshAddOn.fetchWebContent("http://192.168.0.253:8080/json.htm?type ... tchcmd=Off", null, null);
}


Detta funkar men som sagt så verkar det som om det skickas cirka 6 ggr varje gång. Det är lika på alla mina 14 mottagare.

Tips och råd mottages tacksamt då jag gillar nexahome bättre än domoticz när det gäller dygnstimerfunktionerna.
hekj
Posts: 992
Joined: Fri Mar 17, 2023 9:45 am
Location: Stockholm
Contact:

Re: Styra domoticz enheter från nexahome

Post by hekj »

XamDam wrote:Tack, detta verkar som om det funkar ok. Det enda kruxet verkar vara att i loggfilerna på Domoticz så verkar det som om det skickas uppemot 6 st tillslag vid varje tillfälle.
...
Det jag gjort är att jag skapat ett antal dummymottagare i tellduscenter och styr dom med nexahome. När en lampa tänds så utförs följande script,

Code: Select all

addClassPath("C:/nexahome/BshAddOn.jar");

echo("Script 53");

if (deviceIsOn("53") && !executedByCmd() ) {
   echo("Nu är det kväll");
   page = BshAddOn.fetchWebContent("http://192.168.0.253:8080/json.htm?type=command&param=switchlight&idx=16&switchcmd=On", null, null);
}

if (deviceIsOff("53") && !executedByCmd()) {
   echo("Nu är det sovdags");
   page = BshAddOn.fetchWebContent("http://192.168.0.253:8080/json.htm?type=command&param=switchlight&idx=16&switchcmd=Off", null, null);
}

Detta funkar men som sagt så verkar det som om det skickas cirka 6 ggr varje gång. Det är lika på alla mina 14 mottagare.

Tips och råd mottages tacksamt då jag gillar nexahome bättre än domoticz när det gäller dygnstimerfunktionerna.
Kolla på nedanstående bsh script, jag har lagt in en utskrift av getExecutedBy() samt ändrat till executedByEvent().

Code: Select all

addClassPath("C:/nexahome/BshAddOn.jar");

echo("Script 53 " + getExecutedBy());

if (deviceIsOn("53") && executedByEvent()) {
   echo("Nu är det kväll");
   page = BshAddOn.fetchWebContent("http://192.168.0.253:8080/json.htm?type=command&param=switchlight&idx=16&switchcmd=On", null, null);
}

if (deviceIsOff("53") && executedByEvent()) {
   echo("Nu är det sovdags");
   page = BshAddOn.fetchWebContent("http://192.168.0.253:8080/json.htm?type=command&param=switchlight&idx=16&switchcmd=Off", null, null);
}
XamDam
Posts: 10
Joined: Fri Mar 17, 2023 9:45 am

Re: Styra domoticz enheter från nexahome

Post by XamDam »

Jag fick lägga till kontroll på om jag styrde manuellt också så även ett klick skulle funka från gui. Nu funkar det och inga dubbletter av till och frånslag i loggfilerna på domoticz.

Finns det ytterligare metoder att använda i scripten förutom de som finns i manualen + dessa två i scripten?
hekj
Posts: 992
Joined: Fri Mar 17, 2023 9:45 am
Location: Stockholm
Contact:

Re: Styra domoticz enheter från nexahome

Post by hekj »

XamDam wrote:Jag fick lägga till kontroll på om jag styrde manuellt också så även ett klick skulle funka från gui. Nu funkar det och inga dubbletter av till och frånslag i loggfilerna på domoticz.

Finns det ytterligare metoder att använda i scripten förutom de som finns i manualen + dessa två i scripten?
String EXECUTED_BY_COMMAND = "C";
String EXECUTED_BY_EVENT = "E";
String EXECUTED_BY_TIMER = "T";
String EXECUTED_BY_UPDATE = "U";
String EXECUTED_BY_WEB = "W";
String EXECUTED_BY_BSH = "B";
String EXECUTED_BY_MENUITEM = "I";
String EXECUTED_BY_START = "S";
String EXECUTED_BY_MODE = "M";
String EXECUTED_BY_ATTRIBUTE = "A";
String EXECUTED_BY_EXCEPTION = "X";
String EXECUTED_BY_POWER = "P";

String executedBy = getExecutedBy();
echo(executedBy);

if (executedByCmd()) {
// do something
}

Det finns 6 st färdiga metoder:

executedByCmd()
executedByEvent()
executedByTimer()
executedByUpdate()
executedByBsh()
executedByWeb()
Post Reply