TCP commands for Ethernet relay

Hi, Will share you my stuff tomorrow, ok?

Can you also share what you have? Then I’ll update your code with the state

Nice! Here you go :

  - platform: command_line
    switches:
      
      tablet:
        command_on: "curl 'http://192.168.0.141:8080/login/validate/' \
-XPOST \
-H 'Cookie: PHPSESSID=r72foce4u77rraj3be3mv8nam5' \
--data 'login_username=xxx&login_password=xxx' -L http://192.168.0.141:8080/action/6640/"
        command_off: "curl 'http://192.168.0.141:8080/login/validate/' \
-XPOST \
-H 'Cookie: PHPSESSID=r72foce4u77rraj3be3mv8nam5' \
--data 'login_username=xxx&login_password=xxx' -L http://192.168.0.141:8080/action/6640/" 

Do you also have the dobiss webserver?

Here is how my HA looks:

Mooi, ik heb idd ook de webserver, maar die heb je niet nodig, jij stuurt je commando’s rechtstreeks naar de webserver? Ik stuur ze rechtstreeks naar de maxcontroller zelf … daar haal ik ook de status vanaf, ook als je een lichtsensor ofzo hebt, dan kan je die waarde uitlezen…

Maar ik gebruik het vooral voor lichtpunten stopcontact en sferen …

Ik gebruik mijn dobiss webserver ook niet meer nu, veel mooier in HA

Hoe lees je trouwens uw live verbruik uit? Is dan via een smappee ofzo?

ik stuur ze idd naar de webserver. Hoe stuur jij je commando’s naar de controller dan? ook met curl?
Ik heb enkel lichtpunten aan de dobiss, voor stopcontacten heb ik enkele fibaro’s (z-wave)
Lichtsensor van dobiss wordt gebruikt voor lichtpunt in de berging.
Energiemeting ook via z-wave met de aeotec energymeter die ik uitlees met de utility meter van HA aangepast naar de dag & nacht tarief van mijn energieleverancier

Via dit en tcp commando, heel simpel hoor, zal je morgen ook de dobiss software geven, heel simpel om te gebruiken, kan je ook sferen maken die je achter je knoppen kan zetten… Snap niet waarom jij de software niet hebt…

Met jouw curl , weet je eigenlijk niet of je het licht aan / uit zet, je on/off commando ziet er hetzelfde uit … Hoe komt je aan die cookie is?

Werkt de software op mac? de status zie ik idd niet :grimacing:
ik heb er een on/off commando van gemaakt omdat dit makkelijker is om ze via de google home speaker aan of uit te zetten. Nu zeg ik bvb : hey google zet tablet aan (switch tablet is een ledstrip onder mijn venster). Cookie was een moeilijke , maar met behulp van Wireshark kon ik mijn acties vinden om de lichten te bedienen

Ok, zal je morgen mijn info bezorgen, dan heb je ook de status, ook handig voor in je Google home… Zeker omdat het dan lichten zijn in Google ipv switchen
Ik heb de Windows versie, maar maakt niet uit, dan moet je even wat commando’s sturen, zal je nog wel uitleggen…

Hoeveel modules heb je van dobiss? Normaal zijn dit relays van 8 of 12 punten

Super,
heb totaal geen kennis van tcp commando’s.
Ik zie hier 3 x relay van 8 punten en 3x relay extension met 4 punten.
Blij dat ik op dit topic ben terechtgekomen, ik ben al een ganse tijd op zoek om de states correct weer te geven in HA.

ok dan heb je er ook idd 12 punten per relais zelfde als mij…

anyway, je relays A, B, C,… komen overeen met code 41 42 43
dan je punten 1 - 12 komen overeen met code 00 01 02 … tot 11

omdat je de software niet hebt, hierbij trouwens de windows versie : https://www.dropbox.com/s/hi54g95w2x5587d/Maxtool%20Setup%206.3.1.msi?dl=0
zal je voor elke lichtpunt even onderstaand commando via putty moeten sturen, en even in notepad noteren welk licht aan/uit gaat…

commando om bv een licht aan te zetten : op relais A punt 1

echo -e "\xED\x43\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xAF\xAF\x41\x00\x01" | nc 192.168.0.10 1001

commando om licht uit te zetten : op relais A punt 1

echo -e "\xED\x43\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xAF\xAF\x41\x00\x00" | nc 192.168.0.10 1001

belangrijk in bovenstaande string achteraan de 6 bits : …\x41\x00\x00 , dit stuk is altijd identiek, noet vieranderen dus
\x41 => komt overeen met relais mode A, … \x42 is dan B \x43 is dan relais C etc…
\x00 is lichtpunt 00 , kan dus gaan van \x00 tot \x11 (lichtpunt 1 tot 12)
\x01 => lamp aan of \x00 = > lamp uit

in HA:

ik ben begonnen met switchen, maar je kan voor onderstaande uiteraard evengoed shell commandos maken…

#switches

- platform: command_line
  switches:
    light1:
      friendly_name: Bureau
      command_on: echo -e "\xED\x43\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xAF\xAF\x41\x00\x01" | nc 192.168.0.10 1001
      command_off: echo -e "\xED\x43\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xAF\xAF\x41\x00\x00" | nc 192.168.0.10 1001

Toen ik meer kennis had van HA, ben ik begonnen met lights, dit is veel mooier uiteraand in google Assistant :slight_smile:
hiervooor gebruik ik template lights

#lights

- platform: template
  lights:	  
    bureau:
      friendly_name: "Bureau"
      value_template: "{{ states.sensor.dobiss.state[0:2] == '01' }}"
      turn_on:
        - service: switch.turn_on
          data:
            entity_id: switch.light1
        - service: shell_command.state_bureau_on   
      turn_off:
        - service: switch.turn_off
          data:
            entity_id: switch.light1
        - service: shell_command.state_bureau_off  	  


nu het moeilijke gedeelte :) , hier heb ik enige tijd voor moeten nadenken :)

probleem 1: de state…
via een python script, wellicht kan je dit ook doen met deze , maar ik was het een beetje beu :slight_smile: https://www.home-assistant.io/components/tcp/
om de 10 seconden lees ik de state uit van de dobiss controller, zodat alle lampen in HA ook mooi de state doorkijgen als je ze men de klassieke schakelaar bediend
dit is het commando wat je moet sturen : ED63300000000000000000000000AFAFffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
bovenstaand commando leest NIKS uit, je moet per set van 4 x ffff een lamp toevoegen
dus in mijn voorbeeld hierboven : ED63300000000000000000000000AFAF4100ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ik verander de eerste 4 x ffff door 4100 … de volgende 4 x ffff verander je weer door een ander lichtpunt
LET op , je mag niet meer fffff… veranderen dan de max string, anders kan je best een 2de state sensor aanmaken…
LET op, hier moet je hex tellen, dus lichtpunt 10 is dus 0A , dus bv relais A, punt 10 = 410A

deze file zet je dus gewoon in je \config dir : https://www.dropbox.com/s/22pmoa3s642ztz9/dobissreceive.py?dl=0
gewoon even het IP adres veranderen en de string, je ziet in de string al een voorbeeld hoe ik het gebruik…

na herstarten van HA, krijg je een sensor, elk lichpunt bestaat uit 2 bytes, je gaat zien als je maat 1 lichpunt uitleest dat je sensor bv is :
00fffffffffffffffffff…
of
01fffffffffffffffffff…
je weet dan dat lichtpunt bureau aan of uitstaat…

als je meerdere states uitleest, dan krijg je bv
0000fffffffffffffffff… => 2 lampen uit
of
0101fffffffffffffffff… => 2 lampen aan

dit is de config voor sensor :

sensor:
  - platform: command_line
    command: python3 /config/dobissreceive.py
    name: dobiss
    scan_interval: 10
	#om de 10 seconde zal dus de state aanpassen van mijn licht in HA, als ik deze met een klassieke schakelaar bedien .....

in de template light hierboven zie dus dat ik deze regel difinieer:

value_template: “{{ states.sensor.dobiss.state[0:2] == ‘01’ }}”

in mijn geval, de eerste 2 bytes , als deze op 01 gaan, dan gaat bureau aan

dit is dan een vb voor je 2de lichtpunt:

value_template: “{{ states.sensor.dobiss.state[2:4] == ‘01’ }}”

dus dit was voor mij al een groot success tot hiertoe
maar ik had nog 1 probleem, als ik een lichtpunt aan/uit zet via HA, dan wou ik ook dat onmiddelijk de state veranderde in HA zelf, anders werd het lamp icoontje pas na 10 seconden actief
daarom dat ik dus deze shell commandos heb gemaakt in mijn template light:

    - service: shell_command.state_bureau_on 
    - service: shell_command.state_bureau_off 	

ik gebruik ook bearer tokens uiteraard :slight_smile:

shell_command:
state_bureau_on: "curl  -k POST -H \"Authorization: Bearer XXXXX\" -d '{\"state\": \"on\",\"attributes\": {\"assumed_state\": true,\"friendly_name\": \"Bureau\",\"icon\": \"mdi:lightbulb-on\"}}' https://127.0.0.1:8123/api/states/light.bureau"
state_bureau_off: "curl  -k POST -H \"Authorization: Bearer XXXXX\" -d '{\"state\": \"off\",\"attributes\": {\"assumed_state\": true,\"friendly_name\": \"Bureau\",\"icon\": \"mdi:lightbulb-on\"}}' https://127.0.0.1:8123/api/states/light.bureau"

ik hoop dat het een beetje duidelijk is , veel werk om al je lichtpunten erin te zetten, maar het is het wel waard vind ik …
je laat maar weten als je ergens tegenaan loopt…

Wow, bedankt voor de uitgebreide tutorial :smile:
Zou 1001 de standaardpoort zijn op de controller?
Ik zie wel waar ik uitkom en hou je op de hoogte. Nogmaals bedankt!

Np, yep, die port is standaard van de maxpro

Een update:
De command line switches zijn al gelukt samen met de sensor en geven de juiste status weer :smile: Maar het duurt idd lang voordat hij de state doorgeeft aan HA.
Volgende stap is overgaan naar template lights maar het is me nog niet helemaal duidelijk hoe uw shell commandos werken:

shell_command:
state_bureau_on: "curl  -k POST -H \"Authorization: Bearer XXXXX\" -d '{\"state\": \"on\",\"attributes\": {\"assumed_state\": true,\"friendly_name\": \"Bureau\",\"icon\": \"mdi:lightbulb-on\"}}' https://127.0.0.1:8123/api/states/light.bureau"
state_bureau_off: "curl  -k POST -H \"Authorization: Bearer XXXXX\" -d '{\"state\": \"off\",\"attributes\": {\"assumed_state\": true,\"friendly_name\": \"Bureau\",\"icon\": \"mdi:lightbulb-on\"}}' https://127.0.0.1:8123/api/states/light.bureau"

Jij verwijst daar naar “https://127.0.0.1:8123/api/states/light.bureau” ? Kun je me hier wat verder op weg helpen?
Thanks

ah mooi :slight_smile:

ja , probleem wat ik idd dus had, is als je de "template light’ aanzet, dat het icoontje pas na x aantal seconden op aan / uit gaat, afhankelijk hoeveel seconden je hebt geconfigureerd in de sensor config
je zou deze ook op 1 seconden willen zetten, maar ik wil de dobiss ook niet continu pollen

daarom was ik op zoek naar een commando, om puur en alleen maar de state van een icoon aan te passen, zonder effectief het licht aan/uit te doen… en dit kan volgens mij alleen maar met de curl / api/states

dus die 2 regels zijn puur de commandos om mijn template light state “bureau” aan te doen
dat er zoveel " \ " in zitten , is puur dat je elke " moet escapen met een \ , vraag me niet waarom , maar zo werkt het,… in putty moet je die \ niet gebruiken…

die atributen, is puur de weergave van het icoontje en de naam van het licht enzo, als je die niet meegeeft, dan veranderd het naar een standaard icoontje… want ik heb in mijn customize.yaml onderstaande geconfigureerd…
dus deze waarden moest ik ook doorgeven in de curl

assumed state => licht aan/uit zetten ongeacht de state , anders heb je een boolean
icon => spreekt voor zich :slight_smile:

 light.bureau:
  assumed_state: true 
  icon: mdi:lightbulb-on

dus als je nu een lamp aan / uit doen, dan is ook dadelijk de state aangepast van het icoontje, en moet je niet die 10 seconden wachten
is mooier zo , maar niet noodzakelijk hé :slight_smile:

maar in google home, komt dit effect dan ook dadelijk door, als je lichten exposed

Ok, duidelijk.
Ik heb zelf nog wat zitten proberen met de scrape sensor om zo de states uit de webserver te filteren maar zonder succes. Ik had met deze test command line schakelaar nu gewoon willekeurig een relais nummer ingegeven op een RPi die ik gebruik om te testen. Zal dit weekend een pc meebrengen van op kantoor zodat ik de maxtool kan gebruiken om de relaismodules uit te lezen Zal iets vlotter gaan met de software van dobiss zelf :smile:
Zal dan alle templates lights ineens op mijn intel nuc in de config gieten en we zijn vertrokken :+1:
Wat als ik nog een tweede dobiss state sensor wil aanmaken? Of kan ik in de bestaande sensor een tweede string aanmaken?

ik kwam ook idd niet toe met de FFFF… string, in het begin had ik idd 2 sensors gemaakt, maar zag in de .log file, dat ik soms timeouts had op de sensor, denk dat ze tegelijk aan het uitlezen, waren, dus heb er 1 sensor terug van gemakt, maar dan via python het script aangepast met 2 sends, en 1 receive naar HA toe…

zo heb ik in 1 HA 1 lange sensor

import socket
import codecs
import binascii

host = '192.168.0.10'
port = 1001
message = binascii.a2b_hex ("ED63300000000000000000000000AFAF4205420a410041014102410341044105410B42024304430A430B4408440943074306440A4500450145024503410A4106")

mySocket = socket.socket()
mySocket.connect((host,port))
mySocket.send(message)

data = mySocket.recv(1024)
data = binascii.hexlify(data).decode()

message2 = binascii.a2b_hex ("ED63300000000000000000000000AFAF420842074209430042064204420344004401440244034404440544064407FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF")
mySocket.send(message2)

data2 = mySocket.recv(1024)
data2 = binascii.hexlify(data2).decode()

print (data + '--' + data2)


mySocket.close()

opletten met de maxtool hé, eerst uw config INLEZEN, anders stuur je een lege config door naar je maxserver met alle gevolgen vandien :slight_smile:
met maxtool kunt ge dan ook sferen aanmaken, is wel handig, of uw druktoetsen heel makkelijk aanpassen, heb ik in het begin toch veel gedaan
of druktoetsen 2de functies geven