Beiträge von hajueschmitz
-
-
Das ist genau so wie Digest Auth funktioniert:
Erst im 2. Request wird "Authorization: Digest username" als Header mitgesendet, weil nonce etc. erst mit der 401 Response mitgeteilt wird.
In java sieht das dann erst mal so aus (und kein 2.Versuch). Es gibt aber eine Messagedigestklasse, dievStringsumwandelt nach SHA256 zB. (java.security.MessageDigest)
java.io.IOException: Server returned HTTP response code: 401 for URL: http://admin:******@192.168.178.146/rpc/Shelly.GetStatus
at java.base/sun.net.http://www.protocol.http.httpurlconnection.getinputstream0(httpurlconnection.java:2038
at java.base/sun.net.http://www.protocol.http.httpurlconnection.getinputstream(httpurlconnection.java:1627
at test.tlx10pro.urlGetPage(tlx10pro.java:233)
at test.shelly.getshellydata(shelly.java:405)
at test.test.shellyMessung(test.java:59)
at test.test.doLoop(test.java:151)
at test.test.<init>(test.java:236)
at test.test.main(test.java:240) -
Falls du Zugriff auf eine Linux-Box (und vermutlich auch Mac) hast, kannst du dir den Authentication-Austausch mit curl und dem -v Parameter ansehen
da ich von einem Raspberry Pi abrufe: ja
Den eingangs angesprochenen Unterschied Gen2/Gen3 gab es gar nicht. Nach einem Reload im Firefox stellte sich heraus: Authentication doch abgeschaltet (wurde zuvor umgekehrt angezeigt). Browsergeisterei.
Also Beide gleiches Verhalten mit Error 401, wenn Authentication eingeschaltet.
Hier der Curl-Output des Gen3: (zuerst 401, dann 200 verstehe ich nicht)
curl http://192.168.178.146/rpc/Shelly.GetStatus -v --digest --user admin:******
* Trying 192.168.178.146:80...
* Connected to 192.168.178.146 (192.168.178.146) port 80 (#0)
* Server auth using Digest with user 'admin'
> GET /rpc/Shelly.GetStatus HTTP/1.1
> Host: 192.168.178.146
> User-Agent: curl/7.88.1
> Accept: */*
>
< HTTP/1.1 401 Unauthorized
< WWW-Authenticate: Digest qop="auth", realm="shelly2pmg3-e4b3231d66d4", nonce="1763706804", algorithm=SHA-256
< Content-Length: 0
< Server: ShellyHTTP/1.0.0
< Connection: close
<
* Closing connection 0
* Issue another request to this URL: 'http://192.168.178.146/rpc/Shelly.GetStatus'
* Hostname 192.168.178.146 was found in DNS cache
* Trying 192.168.178.146:80...
* Connected to 192.168.178.146 (192.168.178.146) port 80 (#1)
* Server auth using Digest with user 'admin'
> GET /rpc/Shelly.GetStatus HTTP/1.1
> Host: 192.168.178.146
> Authorization: Digest username="admin", realm="shelly2pmg3-e4b3231d66d4", nonce="1763706804", uri="/rpc/Shelly.GetStatus", cnonce="NWNjZjI1NmUyYTJiODk3YjJlYjc0MTVhYmFjZmM1N2E=", nc=00000001, qop=auth, response="fac4b561ee213eeb6b31726a3a53bc6b1409a07079666ccc7e8a790d72577420", algorithm=SHA-256
> User-Agent: curl/7.88.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Type: application/json
< Content-Length: 1456
< Server: ShellyHTTP/1.0.0
< Connection: close
<
{"ble":{},"bthome":{},"cloud":{"connected":false},"input:0":{"id":0,"state":null},"input:1":{"id":1,"state":null},"knx":{},"matter":{"num_fabrics":0,"commissionable":false},"mqtt":{"connected":false},"switch:0":{"id":0, "source":"init", "output":false, "apower":0.0, "voltage":229.1, "freq":50.0, "current":0.000, "pf":0.00, "aenergy":{"total":2002.730,"by_minute":[0.000,0.000,0.000],"minute_ts":1763706780}, "ret_aenergy":{"total":0.000,"by_minute":[0.000,0.000,0.000],"minute_ts":1763706780},"temperature":{"tC":38.7, "tF":101.6}},"switch:1":{"id":1, "source":"timer", "output":false, "apower":0.0, "voltage":229.2, "freq":50.0, "current":0.000, "pf":0.00, "aenergy":{"total":6780.849,"by_minute":[0.000,0.000,0.000],"minute_ts":1763706780}, "ret_aenergy":{"total":0.000,"by_minute":[0.000,0.000,0.000],"minute_ts":1763706780},"temperature":{"tC":38.7, "tF":101.6}},"sys":{"mac":"E4B3231D66D4","restart_required":false,"time":"07:33","unixtime":1763706804,"last_sync_ts":1763706688,"uptime":61079,"ram_size":257396,"ram_f* Closing connection 1
ree":86268,"ram_min_free":69552,"fs_size":786432,"fs_free":311296,"cfg_rev":40,"kvs_rev":0,"schedule_rev":0,"webhook_rev":0,"btrelay_rev":0,"bthc_rev":0,"available_updates":{},"reset_reason":3,"utc_offset":3600},"wifi":{"sta_ip":"192.168.178.146","status":"got ip","ssid":"ssssssssssss","bssid":"08:96:d7:5f:c0:35","rssi":-67,"sta_ip6":["fe80::e6b3:23ff:fe1d:66d4","2003:d3:f49:a100:e6b3:23ff:fe1d:66d4"]},"ws":{"connected":false}} -
Wir hatten hier mal ein Thema mit einer Saune hier im Forum, daher habe ich sogar einen in siedendes Wasser getaucht und auch das passte
Eine Messung vor ca 1 Woche ergab, dass die 5 Fühler mit max Abweichung von 1°C zwischen 85° und 25° zusammen mit einem weiteren Testsensor im Gleichschritt liefen.
Die fast synchrone Abwichung von -10° irrte mich zuvor.
Es lag an der Platzierung gerade unter der 65mm starken Tankdämmung. Bei der mußte man um die Ecke fummeln damit der gut anliegt.
Dasselbe galt für die Messungen unter der Isolation. Die mussten einfach mit Hilfsmitteln deutlich tiefer reingeschoben werden.
Der Lieferant der Shelly/Addon/Fühler-Kombi war mediarath. Gibt nichts zu meckern. -
Im Edge wurde das Passwort zuvor nie eingegeben.
Nun habe ich mal im Firefox in der Oberfläche "Shift-Reload" gedrückt.
Und siehe da: die Authentication beim Gen3 wird nun als AUSGESCHALTET abgezeigt (war an angeblich). Hmm.
Vllt. foppt mich da der Browser bzw ein Zusammenspiel zw shelly und Browser?
Im firefox habe ich zuvor alle Shelly-bezogenen Passworter gelöscht. Er fragt dann auch danach und ich lehne speichern ab.
Schalte ich dann die Authentication wieder ein geben Abfragen vom pi4 mit Passwortangabe Fehler 401 auch beim Gen3.
Sprich: das Verhaltene der beiden Shellys war gleich und die Annahme das Auth eingeschaltet falsch.
Also: evtl. Synthax falsch und Authentication war evtl. gar nicht an. Allerdings funktioniert Alles mit Passwortclause solange Auth=Aus.
Ich werde mal mit der Oberfläche des Shelly in den Edge umziehen. Nicht alles funktioniert im Firefox. -
Danke.
Nachdem Alles aktuelle Firmware hat: Authentication bei Gen 3 eingeschaltet, beim Gen 2 aus.
In einem (neu gestarteten ) Edge läuft dieses Kommando (ohne Passwort) erfolgreich (das ist der Gen3):
192.168.xxx.yyy/relay/1?turn=on&timer=10
Die Oberfläche im Firefox (eingeloggt, Login wird dort auch verlangt) zeigt mir den 2.Schalter auch für die 10 Sek als eingeschaltet an.
Das verwirrt mich. -
-
Der Gen 2:
Shelly Plus2PM 30C92280A190| 1.0.7| 86f3bfa3 (da gäbe es ein Update auf 1.3.3 (mache ich gleich mal)
Der Gen 3:
Shelly 2PM Gen3 E4B3231D66D4| 1.7.1| 6d4afb10| (kein Update angezeigt)
Insgesamt schwankendes Verhalten, als würden sich die Shelly die abfragende IP-Adresse merken.
Anderer Browser (edge) Abfrage an den Passwortgeschützten Gen3 gibt GetStatus
Ausgabe OHNE Paswortabfrage bei erstmaligem Aufruf in diesem Browser. -
Mir ist gerade Folgendes aufgefallen:
Beide shellys (gen2 mit ausgeschalteter Authentication, diese bei gen 3 eingeschaltet) beantworten klaglos "GetStatus"-Abfragen OHNE Authentifizierung.
Schalte ich diese beim gen 2 auch ein gibts (ohne Loginanteil im Urlstring) Error 401.
Im Firefox derselbe Urlstring fragt dann beim Gen2 nach Benutzer / Passwort (Dialog). Beim Gen 3 einfach Output.
Da ist also definitiv ein Unterschied im Handling. -
"Vielleicht hilft die das hier weiter:
https://shelly-api-docs.shelly.cloud/gen2/General/Authentication/"
Danke schau ich mir an. Im Link finde ich javascript was nochmal ein Unterschied zu Java ist.
Aber ich bleibe dran -
Hallo, ich programmiere eine Heizungssteuerung (bislang lesende Zugriffe, keine Schaltzugriffe)
2 Shellys (Gen2 2pm plus mit Addon, Gen3 ohne Addon)
1 Raspberry Pi4 als Master (Java, der fragt die Shelly ab und soll auch das Schalten anstoßen / Überwachen
Bislang Alles ohne Sicherheit (Passwort). Da ich bald schalten will jetzt Umstellung auf Passwort. Beide.
Alle Kommandos wurden mit Firefox getestet und funktionieren
- http://admin:pwd@host1oder2/rpc/Shelly.GetStatus
- http://admin:pwd@host1oder2/relay/1?turn=off
bei BEIDEN shellys. (Benutzer und Passwort werden bei jedem Befehl übertragen). Ich bin gleichzeit mit Firefox auf beiden Shellys drauf und eingeloggt. http://host/#/
Von der Java-Software aus funktioniert das nur beim 2.Shelly (Gen3), beim Gen2 mit Addon erhalte ich einen Error 401 (not authorized). Software identisch.
Kopiere ich aus der Fehlermeldung beim Ansprechen des Gen2-Shellys den Url-String in Firefox funktioniert dieser.
Sind betreffs des Loginhandlings Unterschiede zw. 2pm plus Gen 2 (mit Addon) und Gen 3 bekannt?
Kanns am Addon liegen? -
klemm mal alle 5 Sensoren (oder besser noch ein paar mehr) zusammen und bring sie für ein paar Stunden auf Temperatur. Dann siehst welcher wegläuft und kannst selektieren.
ich werde die mal bei 3 Temperaturen alle zusammen in Wasser stecken.
20°, 50°, 70°
Falls sich da eine systematische (evtl. sogar lineare) Abweichung herausstellt, kann ich das in meiner Software wandeln.
Für mich wäre das Problem dann erledigt.
Leider kann ich es nicht mit etwas anderen als dem shelly-Addon im Vergleich testen, um zu sehen ob es Unterschiede gibt.
Fest steht: die Werte sind bei höheren Temperaturen zu niedrig. -
ich hatte zwischendrin auch das Problem (nach an und abklemmen wg. Problemen die Sensoren zusammenzuschließen),
dass da 2 fehlten.
Ich habe dann im Shelly (hier 2pm plus Gen2) alle abgemeldet (remove) und danach alle wieder neu hinzugefügt.
Alle wieder da.
3 an einem Anschluß: Zu fieselig. Bei mir halfen da 3 Wagoklemmen, für jede Farbe eine. Mit Aderendhülsen, sonst hielten die da nicht.
Von dort einen dickeren Draht zum Addon. -
Hier ist deine Montage wahrscheinlich nicht sauber genug
sicher nicht optimal und es kommt auch nicht auf +-1° an. Die bisherigen NTC5K-Sensoren waren genau so montiert vom Heizungsbauer.
Hat 30 Jahre andere Werte angezeigt. Bis 80° (ich habe das aufgezeichnet)
Ich meine MEINE Fühler DS18B20, nicht den Typen allgemein. Kann ich ja gar nicht beurteilen.
Es ist tief unter die Isolation geschoben, und beim Referenzthermometer genau gleich.
Das Zweite Referenzthemometer ist letztlich die eingestellte Kesselbegrenzung (Maximum) bei 75°, was mit dem ersten Referenzthermometer recht nahe übereinstmmt (-1°).
Dennoch 10° Differenz zum DS18B20.
Die Temperaturen ändern sich sehr träge (36 Minuten von 20° auf 65°). Auch wenn der Kontakt nicht optimal ist wird der Fühler irgendwann die Umgebungstemperatur annehmen.
Ich tippe eher auf einen Fehler meiner Einstellung (was kann es ein?) oder ich habe doch die falschen Fühler erwischt.
Sind die allgemein so billig? -
ich habe 5 DSB18B20 an Shelly2plus Gen2 + Addon hängen. Funktioniert soweit.
Hatte alles zusamen in einem Paket bei ebay (mediarath) gekauft.
Im Bereich um die 20°C alles wunderbar. Plausible Werte, auch Vergleichsmessung sehr nahe dran.
Auffällig: die Temperatur eines Heizkessels (Output nahe am Kessel unter der Rohrisolation) ist im oberen Bereich 10° zu niedrig.
Kessel auf 75° begrenz, Anzeige 65°, Vergleichsmessung 73-74°, Analogthermometer 80°, mit Infrarotthermmeter Temperaturen "bis" 74°. (Letzteres ist ein wenig Lotto, wo messen?)
Ähnliche Beobachtungen bei der Solarthermie. Umso höher die Temperaturen, umso großer Abweichung nach unten.
Beim Warmwassertank ähnlich, nur wird der nicht so heiß. (bis 49/54°), aber Werte gefühlt zu niedrig.
Der Shelly gestattet ja einen Offset einzustellen. Aber, das hilft nicht, es stimmt ja anscheinend die Steigung nicht.
Andere Fühler kaufen? Kalibriermöglichkeit?
Der Aufpreis der Fühler aufs das Shellyset war schon sehr gering (ca 4€ pro Fühler mit 5m Kabel)
Danke für Tips. -
Danke, das mit dem Gen4 überleg ich mir.
Auf den Gen3 kam ich, wei, der billiger ist als der Gen 2.
Wenn ich da nachhaken darf: Betriebssicherheit.
Ist über die Ausfallsicherheit der Shellys etwas bekannt?
Worst Case Scenario wäre: Undefinierter Zustand und Switch bleibt dauerhaft auf "on".
Ich möchte dem gerne vorbeugen, indem der Pi über eine WLan-Steckdose den Shelly (vorübergehend) stromlos gemacht wird, wenn der nicht mehr antwortet.
Für bessere Ideen bin ich offen. -
Zumindest 3. Gen. - wenn der Spieltrieb nicht so ausgeprägt ist.🙀
ist er nach 40 Jahren nicht mehr so arg

Das Ding soll tun wofür es da ist. -
Falls du in Zukunft keine BT Geräte planst, ist es egal.
Danke an Beide. Nein nichts geplant mit BT - ist auch ausgeschaltet.
Aber der 2-te soll ja Gen3 werden, der vorhandene ist Gen 2. -
Das Gen2 „+“ bedeutet (momentan) => Gen2/3/4
heißt: sollte gehen?
-
Hallo,
ich betreibe einen Shelly Plus2PM mit Addon an einer Heizung und Solarthermie.
Derzeit nur lesende Zugriffe auf Temperatursensoren und ein paar Versuche ohne Hardware zu schalten via RPC-Protokoll von einem Raspbery Pi 4 / Java aus. Klappt soweit.
Nun wird (weil 4 Geräte zu schalten sein werden) ein zweiter Shelly benötigt werden.
Der Gen3 ist günstiger zu haben als der Gen2 (bei Conrad für grad 23 Euro).
Ist der RPC-Befehlsatz identisch? Können sich bei Einbau beider in ein Gehäuse Probleme ergeben?
Auf https://shelly-api-docs.shelly.cloud/ finde ich kein eigenes RPC-Protokoll für Gen3, will mich aber auch nicht überraschen lassen.
Irgendwelche Hinweise?
Danke!