Seite 1 von 3

HTTP Switch, ITEM erstellen,

Verfasst: 9. Dez 2021 19:06
von mad-mike
Moin zusammen..

Habe hier eine Relay box, welche über 8 Relays verfügt. (KMtronic LAN)

Diese kann über eine Web Oberfläche geschalten werden, oder Über HTTP bzw UDP Befehle.
Ich habe nun also ein HTTP Binding installiert, und scheiter irgendwie am Konfig von dem Thing.

Ich muss also diesen Befehl nutzen um "Umzuschalten"

Code: Alles auswählen

Toggle Commands
yourIP/relays.cgi?relay=1 - Toggle relay 1
Also im Web Browser funktioniert das. Es ist ein Umschalten, Und gibt wohl kein Feedback auf "ON / OFF" (Ist ja Blöd)

Dann gibts noch:

Code: Alles auswählen

HEX-Binary Commands
ON Commands:
yourIP/FF0101 - Turn ON relay 1
bzw:

Code: Alles auswählen

OFF Commands:
yourIP/FF0100 - Turn OFF relay 1

Die Zahl am ende Des Befehls, ist die Zuordnung des Relais auf dem Board.


Nur wie muss ich dies nun in die Befehle einpflegen??

Möchte Eigentlich nur Ein Switch ITEM Erstellen...

Oder Muss ich hier ein Item Erstellen:

Code: Alles auswählen

Add Items from Textual Definition

Ich Nutze OH3.

Hoffe Jemand Versteht mein Anliegen. :oops: ;)
Wollte eigentlich nur ein Item Switch Erstellen, mit welchen ich dann weiter arbeiten kann.

Danke und Gruss

Re: HTTP Switch, ITEM erstellen,

Verfasst: 9. Dez 2021 20:06
von oh73
Hallo,
ich hab mehrere Geräte die ich mit Http-Befehle schalte.
nur über Thing bekomme ich das bei OH3 nicht hin.

ich mache das über eine Rule, z.B.

Code: Alles auswählen

rule "FS20_3" 
    when Item FS20_3 changed 
then
    if (FS20_3.state==ON)
{
    sendHttpGetRequest("http://192.168.178.23/command?XC_FNC=SendSC&type=FS20&data=e79f021000") 
    }
    else if (FS20_3.state==OFF)
{
    sendHttpGetRequest("http://192.168.178.23/command?XC_FNC=SendSC&type=FS20&data=e79f020000")
}
end
da funktioniert bei mir immer.

bei deinem Befehl könnte es allerdings Probleme mit den Leerzeichen geben,
falls es mit Leerzeichen nicht geht, mal so versuchen.

Code: Alles auswählen

yourIP/relays.cgi?relay=1\u0020-\u0020Toggle\u0020relay\u00201
vielleicht geht auch ' ' als Leerzeichen?

Re: HTTP Switch, ITEM erstellen,

Verfasst: 9. Dez 2021 20:45
von PeterA
Also Http-Befehle kann man auch direkt im Item definieren:

Code: Alles auswählen

Switch  ShellyPlugS_02 "Shelly TV u. BD [%s]"  <poweroutlet>      (gShelly)     {http=">[ON:POST:http://192.168.2.42/relay/0?turn=on] >[OFF:POST:http://192.168.2.42/relay/0?turn=off]"}
Dann dann ist keine Rule notwendig.

Re: HTTP Switch, ITEM erstellen,

Verfasst: 9. Dez 2021 20:49
von mad-mike
Ja Danke, Werde gleich mal also ein ""Dummy"" Item als Switch anlegen, und eine Rule Welche dann den Befehl ausführt...

Ähm, Ich hatte von der Homepage einfach die Links kopiert... :roll:

Habe gerade noch mal versucht:
Ich habe keine Leerzeichen sondern der Befehl lautet:

Relay 1 OFF

Code: Alles auswählen

http://192.168.178.99/FF0100
Und Relay 1 ON

Code: Alles auswählen

http://192.168.178.99/FF0101
Gebe ich den Befehl im Webbrowser ein, wechselt er auch den Status... Also Habe ich da schon mal ein ON und OFF befehlen, und nicht nur ein toggle als umschalter...



Würde sich denn auch mit diesen beiden Code ein Item Erstellen lassen?? :?:

Danke und Gruss

Re: HTTP Switch, ITEM erstellen,

Verfasst: 9. Dez 2021 20:54
von PeterA
Das müsste dann so aussehen:

Wird alles direkt im Item definiert:

Code: Alles auswählen

Switch  Dummy "Mein-Dummy-Switch [%s]"  {http=">[ON:POST:http://192.168.178.99/FF0101] >[OFF:POST:http://192.168.178.99/FF0100]"}

Re: HTTP Switch, ITEM erstellen,

Verfasst: 9. Dez 2021 21:08
von oh73
http Befehl direkt im Item definieren geht bei OH3 nicht!

zumindest nicht in der vorgeschlagenen Schreibweise!

Re: HTTP Switch, ITEM erstellen,

Verfasst: 10. Dez 2021 11:02
von branchweiler
Hi.
Ich habe hier zwei ALLNET 3072 Netzwerksteckdosen, die ich mit OH3 und dem HTTP binding problemlos schalten kann. Zunächst muss natürlich das entsprechende thing richtig konfiguriert werden. So sieht es bei mir aus:

Code: Alles auswählen

UID: http:url:288257324d
label: ALL3072-OG
thingTypeUID: http:url
configuration:
  authMode: BASIC
  ignoreSSLErrors: true
  baseURL: https://172.27.10.86/xml/jsonswitch.php
  password: *****
  delay: 0
  stateMethod: GET
  refresh: 30
  commandMethod: GET
  contentType: application/json
  timeout: 3000
  username: switch
  bufferSize: 2048
location: OG
channels:
  - id: SchalterOG
    channelTypeUID: http:switch
    label: Schalter
    description: ""
    configuration:
      onValue: "1"
      offValue: "0"
      stateExtension: ?id=1
      stateTransformation: JSONPATH:$.result.status
      commandExtension: ?id=1&set=%2$s
Vielleicht hilft es weiter.

Grüße,
Branchweiler

Re: HTTP Switch, ITEM erstellen,

Verfasst: 10. Dez 2021 21:03
von mad-mike
Danke erstmal an alle...

Ich habe nun gefühlte 2000 verschiedene Versionen ausprobiert aber keine will funktionieren.?? :?: :?:

Ich habe ja auch paar shelly verbaut, und wenn ich die URL adresse unter Action im Shelly eingebe, dann reagiert die Relay BOX... :o

Wo mache ich bei OH nun den Fehler??

Also Habe nun alle Varianten versucht:

Habe erst mal ein ITEM erstellt:

Code: Alles auswählen

Switch  Dummy "Mein-Dummy-Switch [%s]"  {http=">[ON:POST:http://192.168.178.99/FF0101] >[OFF:POST:http://192.168.178.99/FF0100]"}
Reaktion ist null. Weil oben steht, das es unter OH3 nicht funktioniert, habe ich es vorerst nicht weiter ausprobiert...


Hatte dann noch mit dem HTTP Binding mich versucht, aber auch Null Reaktion. Also HTTP Thing erstellt, Channel erstellt und Mit neuen ITEM oder Item siehe oben verknüpft, aber es reagiert einfach nicht...

Zum schluss noch mal eine Rule erstellt. Und auch hier keine Reaktion??? :roll: :?
Irgendwie deprimierend...

Code: Alles auswählen

rule "KMTronic" 
    when Item KMtronic1 changed 
then
    if (KMtronic1.state==ON)
{
    sendHttpGetRequest("http://192.168.178.99/FF0101") 
    }
    else if (KMtronic1.state==OFF)
{
    sendHttpGetRequest("http://192.168.178.99/FF0100") 
}
end
Im Log wird also der Switch von ON -> OFF geschalten und Rule startet, und es passiert nichts.

Im Log wird nach paar sekunden dann das angezeigt:

Code: Alles auswählen

[ERROR] [enhab.core.model.script.actions.HTTP] - Fatal transport error: java.util.concurrent.TimeoutException: Total timeout 5000 ms elapsed
Nun, Ich bin nun noch nicht so der Profi, aber irgendwie glaube ich, das OH auf ein Feedback der Box wartet, welches es nicht gibt??
Ich glaube, das ich mit dem HTTP Binding auf dem richtigen weg bin, aber irgendwie ist der Wurm drin...

Hoffentlich hat jemand eine IDEE..

Danke und Gruss.

Re: HTTP Switch, ITEM erstellen,

Verfasst: 10. Dez 2021 21:34
von oh73
ändere mal den sende Befehl etwas ab,
von

Code: Alles auswählen

 sendHttpGetRequest("http://192.168.178.99/FF0101") 
in

Code: Alles auswählen

 sendHttpGetRequest("http://192.168.178.99/FF0101",10000) 
10000 sollte reichen, hab aber bei manchen auch 15000 drin!

der Http Server antwortet zu langsam!

Edit:
versuchen kann man auch noch mit

Code: Alles auswählen

var ergebnis = sendHttpGetRequest("http://192.168.178.99/FF0101",10000)
logInfo("Ergebnis = ", ""+ ergebnis)
vielleicht gibt es da noch was in der Log Datei zu sehen?

Re: HTTP Switch, ITEM erstellen,

Verfasst: 11. Dez 2021 10:00
von mad-mike
moin.

Ergebnis ist:

Code: Alles auswählen

2021-12-11 08:22:28.103 [ERROR] [enhab.core.model.script.actions.HTTP] - Fatal transport error: java.util.concurrent.TimeoutException: Total timeout 10000 ms elapsed

2021-12-11 08:22:33.103 [ERROR] [enhab.core.model.script.actions.HTTP] - Fatal transport error: java.util.concurrent.ExecutionException: java.net.SocketTimeoutException: Connect Timeout

2021-12-11 08:22:33.108 [INFO ] [penhab.core.model.script.Ergebnis = ] - null
Passiert nix am modul... :?

Ich habe auch noch ganz viel gesucht und habe dies gefunden: könnte das aufschluss auf die komunikaton geben??

Bild