von PC Daten an FHEM senden

Begonnen von TWART016, 10 Juni 2017, 17:41:25

Vorheriges Thema - Nächstes Thema

TWART016

Hallo,

mein Ziel ist es einen Wert von einem Windows PC an einen dummy in FHEM zu senden. Es läuft ein kleines batch Programm, welches Dateien kopiert. Die Anzahl speichere ich in einer Variable. Wie kann ich diesen Wert an FHEM senden?

Für mich sind es 2 Teile
1) Aufrufen einer URL aus dem batch, nofalls auch Umwege über poweshell. Es wäre schön, wenn der Wert übertragen wird, ohne dass ein Browserfenster sich öffnet.
2) Übertragen des Wertes an FHEM. Wie kann ich in einen dummy einen oder mehrere Werte schreiben?

Eventghost läuft zwar auf dem PC, damit kann ich aber keine Werte an einen anderen Webserver senden.

Wie habe ihr sowas gelöst?


Gruß TWART016

CoolTux

Du kannst deine Ergebnisse als setreading befehl per Telnet senden oder als url Aufruf. Sowas hatten wir hier schon Recht oft. Bitte einmal suchen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

TWART016

Jetzt kann ich zumindest per URL einen Status setzen
https://192.168.178.11:8083/fhem?cmd.testStatus1=set%20testStatus1%20off

Nur wie kann ich anstatt off eine Variable mitgeben?

Jemand eine Idee wie ich aus batch oder powershell eine URL im Hintergrund aufrufen kann?

amenomade

Zitathttps://192.168.178.11:8083/fhem?cmd.testStatus1=set%20testStatus1%20off

Da fehlt noch den CSRF Token oder?  :P  :-X

Mit curl kannst Du in Powershell o.ä. Urls aufrufen, ohne dass ein Browserfenster aufgeht.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

TWART016

Zitat von: amenomade am 10 Juni 2017, 19:00:57
Da fehlt noch den CSRF Token oder?  :P  :-X
csrfToken ist noch auf none. Brauche ich das trotzdem?

Zitat von: amenomade am 10 Juni 2017, 19:00:57
Mit curl kannst Du in Powershell o.ä. Urls aufrufen, ohne dass ein Browserfenster aufgeht.
danke, schaue ich mir mal an. Oder hast du einen Code, vielleicht sogar um das aus batch aufzurufen?

amenomade

ZitatcsrfToken ist noch auf none. Brauche ich das trotzdem?
Nein nein... in dem Fall brauchst Du es nicht...

Für curl, kannst Du einfach
$url = "http://www.google.de"
$result = curl $url


Ansonsten: http://lmgtfy.com/?q=powershell+curl+return+code
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Otto123

Hi,

ich hätte ein Powershell Beispiel für Dich. Vielleicht hilft das. Diese PS Script wird von FHEM über ssh aufgerufen und meldet an einen Dummy in FHEM den Abarbeitungs Status zurück.

Bei Fragen bitte fragen  ;)

#Aufruf des Backups mit Parameter
param(
[string]$Hostname = "192.168.178.104",
[string]$Name,
[string]$Event
)
$Hostname=$Hostname + ":8083"
$Servername="ServerS1"

Set-Location $PSScriptRoot

#Der Server hat Probleme mit Zugriff über IPv4
# Die Namensauflösung macht nur IPv6
# out-nulll verhindert Ausgaben und verhindert Sicherheitsmeldungen vom System
$wp=Invoke-WebRequest -UseBasicParsing -Uri "http://$Hostname/fhem?XHR=1"
$token = $wp.Headers["X-FHEM-csrfToken"]

#Push-Location $(Split-Path $Script:MyInvocation.MyCommand.Path)

$URL="http://$Hostname/fhem?cmd=set%20$Name%20_$Event&fwcsrf=$token"
Invoke-WebRequest -UseBasicParsing -Uri $URL | out-null

#sleep 10 # Nur für Test
Write-Output "$(Get-Date -Format yyyy.MM.dd" "HH:mm:ss) Datei-Backup $Servername gestartet"
.\BackupNeueVersion.ps1 -Test $false > $null

$URL="http://$Hostname/fhem?cmd=set%20$Name%20ServerBackup&fwcsrf=$token"
Invoke-WebRequest -UseBasicParsing -Uri $URL | out-null
Write-Output "$(Get-Date -Format yyyy.MM.dd" "HH:mm:ss) Server-Backup $Servername gestartet"
wbadmin start backup -quiet > $null

$URL="http://$Hostname/fhem?cmd=set%20$Name%20beendet&fwcsrf=$token"
Invoke-WebRequest -UseBasicParsing -Uri $URL | out-null
Write-Output "$(Get-Date -Format yyyy.MM.dd" "HH:mm:ss) Backup $Servername beendet"


Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TWART016

Besten Dank. So habe ich es nun hinbekommen.

In der Batch folgende Zeile:
powershell -Command "& {(New-Object System.Net.WebClient).DownloadString('https://192.168.178.11:8083/fhem?cmd.testStatus1=set%20testStatus1%20off')}"

Auch mit Variablen möglich:
set variable1=testNummer1
powershell -Command "& {(New-Object System.Net.WebClient).DownloadString('http://192.168.178.11:8085/fhem?cmd.testStatus1=set%%20testStatus1%%20%variable1%')}"