Eines noch: falls du planst mehrere Aqara Sensoren zu verwenden, besorg dir ein Xiaomi Gateway und binde die Sensoren darüber in OH ein. Gerade wenn du eine Vielzahl an Aqara Sensoren verwendest ist die Einbindung über das Gateway einfacher und komfortabler. Ich habe zuerst auch die Aqara Sensoren über Zigbee2mqtt eingebunden. Nach dem dritten von ca 25 Sensoren habe ich abgebrochen und ein (eigentilch gleich zwei) Gateways bestellt. Kostet nicht die Welt und kann auch als Signalgeber verwendet werden. An Zigbee2mqtt hängt im moment nur ein Osram Smart Plug (und der ist eigentlich unnötig, da ich inzwischen auf Gosund mit Tasmota umgestiegen bin)
Beiträge von Momo90
-
-
Habe vor einiger Zeit zwei Wassersensoren eingerichtet. Würde dir empfehlen friendly names in der configuration.yaml zu vergeben. Ich habe im folgenden meinen Wassersensor den friendly name "Wasserssensor1" gegeben. Wenn du keinen friendly name vergibst musst du "Wassersensor1" mit "0x00158d0001c34e39" ersetzen.
Thing (unter deiner Bridge):
Code
Alles anzeigenThing topic Wassersensor1 "Wassersensor 1" { Channels: Type contact : status [ stateTopic="zigbee2mqtt/Wassersensor1", transformationPattern="JS:getZigbeeLeak2Contact.js" ] Type number : voltage [ stateTopic="zigbee2mqtt/Wassersensor1", transformationPattern="JSONPATH:$.voltage" ] Type number : battery [ stateTopic="zigbee2mqtt/Wassersensor1", transformationPattern="JSONPATH:$.battery" ] Type number : linkquality [ stateTopic="zigbee2mqtt/Wassersensor1", transformationPattern="JSONPATH:$.linkquality" ] }
item (musst du noch an deine mqtt bridge anpassen):
Code
Alles anzeigenContact Wassersensor1 "Wassersensor 1 [%s]" { channel="mqtt:topic:mosquitto24:Wassersensor1:status" } Number Wassersensor1_LinkQuality "RSSI [%d dBm]" { channel="mqtt:topic:mosquitto24:Wassersensor1:linkquality" } Number Wassersensor1_Volt "Volt [%d mV]" { channel="mqtt:topic:mosquitto24:Wassersensor1:voltage" } Number Wassersensor1_Battery "Batterie [%.1f %%]" { channel="mqtt:topic:mosquitto24:Wassersensor1:battery" }
getZigbeeLeak2Contact.js:Code
Alles anzeigen(function(x){ var result = ""; var json = JSON.parse(x); if (json.water_leak) { result="OPEN"; } else { result="CLOSED"; } return result; })(input)
die sitemap erspar ich mir, die sollte klar sein
Es gibt übrigens auch die Möglichkeit das ganze ohne javascript und jsonpath zu machen. Siehe hier: https://community.openhab.org/t/zigbee2mqtt-…ormations/86362
-
Oder man hat einfach mal Sex mit der Frau.
was schwer werden könte wenn die Frau angepisst ist, weil sie ihre serie nicht sehen kann und daher in diversen sozialen median nicht mitspoilern kann
-
Irgend einen S905x China böller. Habe 3 davon im Einsatz, je um etwa 25 Euronen
Streamen vom Server in Full HD problemlos
Streamen von Live TV in Full HD von der Vu+ problemlos (denke daher, dass streamen von einem thv server ebenso problemlos möglich ist)
Netflix und Pime kann ich nix sagen, da ich keines von beiden nutze -
Übrigens beschäftigen sich hier https://community.openhab.org/t/exec-command…ntainer/92701/2 auch schon andere Leute mit dem Problem von @xSaSx, derzeit ohne Lösung, aber die kann ja noch kommen
-
stimmt. Code in Post #15 und #17 angepasse
-
-
-
Denke das macht so nur Sinn wenn es mehrere sind.
Völlig Richtig! Ich steuere damit auch 3 PCs
-
Danke @Momo90 dann steht ja aber das passwort im klartext drin oder ?
Wie? Wo? Bei meinem Post? PANIK!!
user/pass sind natürlich platzhalter
aber stimmt schon. passwort und username stehen im klartext drin
-
Hier eine offizielle Quelle:
https://ec.europa.eu/taxation_custo…er-ecommerce_deDie Einführung der Einfuhr-Regelung geht Hand in Hand mit der Abschaffung der derzeit geltenden Mehrwertsteuerbefreiung für Waren in Kleinsendungen mit einem Wert bis zu 22 EUR. Dies steht auch in Einklang mit der Verpflichtung, für die Mehrwertsteuer das System des Bestimmungslands anzuwenden
AUT ist bemüht das ganze noch im Herbst umzusetzen. Vor dem Weihnachtsgeschäft...
-
Auch wenn ich glaube, dass es viele hier schon wissen, nochmal zur Info:
Spätestens ab 2021 (in AUT und CH ebventuell früher) fällt EU weit die Zollfreigrenze von € 22. Das heisst dass man für Käufe aus zb China ab dem ersten Cent Zoll und allenfalls auch Einfuhrumsatzsteuer zahlen muss.
(eine von vielen Quellen: https://www.paketda.de/news-zollfreig…bgeschafft.html und https://techkou.net/e-commerce/eu-…-freigrenze-ab/).Ich habe wirkich kein Problem bei heimischen Händlern zu kaufen aber das Zeug das ich brauche bekomme ich entweder größtenteils vor Ort nicht oder es ist völlig überteuert (1000% Erhöhung sind keine Seltenheit). Ich habe auch kein Problem damit Zoll zu bezahlen. Krux an der ganzen Sache ist das Zollstellungsentgelt, das die Logistiker verrechnen. Das schwankt nach meiner Erfahrung zwischen 10 und 15 Euro und kann daher den Warenwert übersteigen.
Ganz abgesehen davon glaube ich, dass die Personalkosten und Bürokratie, die dadurch entstehen weit über den Einnahmen liegen werden.
Ich werde mich daher rechtzeitig vorher mit kleinkram aus China eindecken (ESP, Sensoren und dergleichen).
Wie sich das ganze auf Versandarten wie Germany Express auswirkt wird sich zeigen...
-
ich habe keine Ahnung von docker. So kontrolliere ich meinen Windows PC, eventuell kann das oder teile davon jemand brauchen. Hat einige Zeit gedauert, bis ich ausn Web eine Lösung gefunden habe die tatsächlich funktioniert. Ich hoffe ich habe nix vergessen, ist doch einiges...
items:
CodeString Webpccontrol1 "Web PC Control" { channel="exec:command:device-webpccontrol:input", channel="exec:command:device-webpcstatus:output", autoupdate="false" } String Webpcstatus "Web PC Online Status" { channel="exec:command:device-webpcstatus:output" }
things:
CodeThing exec:command:device-webpccontrol "Web PC Control (On/Off)" [ command="/etc/openhab2/scripts/webpc.sh %2$s", interval=0, timeout=10, autorun=true ] Thing exec:command:device-webpcstatus "Web PC Online Status" [ command="/etc/openhab2/scripts/webpc.sh status", interval=40, timeout=5 ]
webpc.sh:
Bash
Alles anzeigen#!/bin/bash # wakeonlan need to be installed; sudo apt-get install wakeonlan THIS_NAME="$(basename "${0}")" #Admin-User of Synolgy, must be active and the default user "admin" HOST_USER="user" #Synology Admin PW HOST_PASS="pass" #Synology IP Adress HOST_NAME="192.168.1.8" #Synology MAC Adress HOST_MAC="74:D4:35:19:B3:4E" case "${1}" in [oO][nN]) exec wakeonlan -i 192.168.1.255 "${HOST_MAC}" >/dev/null 2>&1 ;; [oO][fF][fF]) exec net rpc shutdown -I 192.168.1.8 -U user%pass >/dev/null 2>&1 ;; [sS][tT][aA][tT][uU][sS]) ping -c 1 -W 1 "${HOST_NAME}" >/dev/null 2>&1 if [ $? -eq 0 ] ; then echo "ON" exit 0 fi echo "OFF" exit 1 ;; *) echo echo "Usage: ${THIS_NAME} <on|off|status>" echo exit 1 ;; esac exit 0
computer.rules:
Code
Alles anzeigenrule "WebPC Switch" when Item Webpcswitch changed then logInfo("Network", "Switching WebPC " + Webpcswitch.state.toString + ": " + Webpccontrol1.state.toString) Webpcstatus.postUpdate(Webpcswitch.state.toString) Webpccontrol1.sendCommand(Webpcswitch.state.toString) end rule "webpc State" when Item Webpcstatus changed then logInfo("Network", "Switching webpc " + Webpcstatus.state.toString + ": " + Webpccontrol1.state.toString) Webpcswitch.postUpdate(Webpcstatus.state.toString) Webpccontrol1.sendCommand(Webpcstatus.state.toString) end
in der Sitemap wird nur der Webpcswitch benutzt -
-
Ich habe am code von @horschte ein bisserl herumgespielt (quick and dirty zusammengeklaut).
Wird unter dem topic LEDMatrix/modus die payload 1 gepublished wird der Text statisch und nicht als Lauftext dargestellt
Wird unter dem topic LEDMatrix/time die payload 1gepublished wird die Uhrzeit als statischer Text dargestellt. Will man lieber die Uhr als Lauftext kann man danach unter LEDMatrix/modus die payload 0 publishen. Es dauert ein bisschen, bis die richige Zeit vom NTP Server geholt wird
vielleicht kanns ja jemand brauchen...
C
Alles anzeigen#include <SPI.h> #include <Adafruit_GFX.h> #include <Max72xxPanel.h> #include <ESP8266WiFi.h> #include <PubSubClient.h> #include <time.h> #define MQTT_USER "XXXX" #define MQTT_PASSWORD "XXXX" // Belegung //DOT Matrix: ESP8266 NodeMCU: //VCC 5V (VUSB) //GND GND //DIN D7 (GPIO13) //CS D3 (GPIO0) //CLK D5 (GPIO14) int pinCS = 0; int numberOfHorizontalDisplays = 16; //Anzahl der Module Horizontal int numberOfVerticalDisplays = 1; //Anzahl der Module Vertikal const byte buffer_size = 45; char time_value[buffer_size]; const char* ssid = "XXXX"; const char* password = "XXXX"; const char* mqtt_server = "XXXX"; int timeswitch = 1; WiFiClient espClient; PubSubClient client(espClient); Max72xxPanel matrix = Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays); int wait = 70; // In milliseconds int ScrollWait = 25; // Zeit in ms für Scroll Geschwindigkeit int helligkeit = 5; // Helligkeit des DisplaysDefault Helligkeit 0 bis 15 int spacer = 1; // Länge eines Leerzeichens int width = 5 + spacer; // Schriftgröße String MatrixText = ""; int modus = 0; // Modus 0 = Marquee, 1 = static void setup_wifi() { delay(10); // Wifi Verbindung Serial.println(); Serial.print("Verbinde mit "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } randomSeed(micros()); Serial.println(""); Serial.println("WiFi verbunden :)"); Serial.println("IP Addresse: "); Serial.println(WiFi.localIP()); } void MQTTCallback(char* topic, byte* payload, unsigned int length) { String PayloadString = ""; for (int i = 0; i < length; i++) { PayloadString = PayloadString + (char)payload[i]; } Serial.println("Eingehender Befehl"); Serial.println(topic); Serial.println(PayloadString); if(strcmp(topic, "LEDMatrix/text") == 0) { Serial.println("Neuer Text wurde gesetzt"); timeswitch = 0; modus = 0; MatrixText = PayloadString; } if(strcmp(topic, "LEDMatrix/intensity") == 0) { Serial.println("Neue Helligkeit wurde gesetzt"); helligkeit = PayloadString.toInt(); matrix.setIntensity(helligkeit); } if(strcmp(topic, "LEDMatrix/scrollwait") == 0) { Serial.println("Neue Scrollgeschwindigkeit wurde gesetzt"); ScrollWait = PayloadString.toInt(); } if(strcmp(topic, "LEDMatrix/time") == 0) { Serial.println("Time aktiviert"); timeswitch = PayloadString.toInt(); } if(strcmp(topic, "LEDMatrix/modus") == 0) { Serial.println("set new Modus"); modus = PayloadString.toInt(); } } void reconnect() { while (!client.connected()) { // Client ID generieren String clientId = "LEDMatrix-"; clientId += String(random(0xffff), HEX); // Verbindung if (client.connect(clientId.c_str(), MQTT_USER, MQTT_PASSWORD)) { Serial.println("Mit MQTT verbunden :)"); client.subscribe("LEDMatrix/text"); client.subscribe("LEDMatrix/intensity"); client.subscribe("LEDMatrix/scrollwait"); client.subscribe("LEDMatrix/time"); client.subscribe("LEDMatrix/modus"); } else { Serial.print("Fehler, :("); Serial.print(client.state()); Serial.println(" neuer Versuch in 2 Sekunden"); delay(5000); } } } void setup() { //delay(1000); matrix.setIntensity(helligkeit); for (int matrixIndex=0 ; matrixIndex < numberOfHorizontalDisplays ; matrixIndex++ ) { matrix.setRotation(matrixIndex, 1); //Erste DOT Matrix Drehen } Serial.begin(115200); Serial.println("Starte LEDMatrix..."); setup_wifi(); client.setServer(mqtt_server, 1883); client.setCallback(MQTTCallback); configTime(0 * 3600, 0, "pool.ntp.org", "time.nist.gov"); // See https://github.com/nayarsystems/posix_tz_db/blob/master/zones.csv for Timezone codes for your region setenv("TZ", "CET-1CEST,M3.5.0/02,M10.5.0/03",1); } void printMatrix() { switch (modus) { case 0: for ( int i = 0 ; i < width * MatrixText.length() + matrix.width() - 1 - spacer; i++ ) { matrix.fillScreen(LOW); int letter = i / width; int x = (matrix.width() - 1) - i % width; int y = (matrix.height() - 8) / 2; //Zentrieren des Textes Vertikal while ( x + width - spacer >= 0 && letter >= 0 ) { if ( letter < MatrixText.length() ) { matrix.drawChar(x, y, MatrixText[letter], HIGH, LOW, 1); } letter--; x -= width; client.loop(); } matrix.write(); delay(ScrollWait); } break; case 1: matrix.fillScreen(LOW); int letter = 15; int x = 128; int y = (matrix.height() - 8) / 2; //Zentrieren des Textes Vertikal while ( x + width - spacer >= 0 && letter >= 0 ) { if ( letter < MatrixText.length() ) { matrix.drawChar(x, y, MatrixText[letter], HIGH, LOW, 1); } letter--; x -= width; client.loop(); } matrix.write(); delay(ScrollWait); break; } } String get_time(){ time_t now; time(&now); char time_output[buffer_size]; // See http://www.cplusplus.com/reference/ctime/strftime/ for strftime functions // Desired format: ( Sun ,Jul 21 2019 ) ( AM 10:03:20 ) strftime(time_output, buffer_size, "%T", localtime(&now)); return String(time_output); // returns ( Sat 20-Apr-19) ( AM 12:31:45 ) } void loop() { if (!client.connected()) { reconnect(); } client.loop(); delay(100); if (timeswitch == 1) { modus = 1; MatrixText = get_time(); MatrixText.trim(); Serial.println(MatrixText); MatrixText.substring(23,28).toCharArray(time_value, 10); Serial.println("HH:MM"); Serial.println(time_value); } printMatrix(); }
-
-
-
Auch installiert. Tolle idee. Ich habe leider des öfteren vergessen den Link zu benutzen
Jetzt wäre noch was für die Android app toll! -
alten binding parallel mit den anderen sonoffs tut.
Wenn du damit meinst, dass du das alte und das neue mqtt binding paralell betreibst: das geht seit OH 2.4 nicht mehr. Du musst dich für mqtt1 oder mqtt2 entscheiden
hast du eh gelöscht, oder?
-
Wie kann bei dem thing
CodeThing topic Licht_Office_3D_Drucker "3D Drucker" { Channels: Type switch : Licht_Office_3D_Drucker
und dem itemCodeSwitch Licht_Office_3D_Drucker "3D Drucker" <poweroutlet> {channel="mqtt:topic:mybroker:sonoff_3dprint:Licht_Office_3D_Drucker"}
was ankommen?
Meines erachtens ist der Ausdruck
im Item falsch und müsste
lauten
Kann mir ads jemand erklären?