akashi9210

send_tank_info

Nov 24th, 2024 (edited)
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.83 KB | Source Code | 0 0
  1. -- Programm: Tank-Füllstand auslesen und über Modem senden
  2. -- Voraussetzungen:
  3. -- 1. ComputerCraft Tweaked installiert.
  4. -- 2. Ein Modem (z. B. Wireless Modem) am Computer angebracht und aktiviert.
  5. -- 3. Der Tank befindet sich direkt hinter dem Computer.
  6.  
  7. -- Konfiguration
  8. local modemSide = "right" -- Seite, an der das Modem angebracht ist
  9. local tankSide = "back"   -- Seite, an der der Tank angeschlossen ist
  10. local channel = 1         -- Kanal, auf dem die Daten gesendet werden
  11.  
  12. -- Funktionen
  13. local function readTankLevel()
  14.     local tank = peripheral.wrap(tankSide)
  15.     if not tank then
  16.         error("Kein Tank an der Seite '" .. tankSide .. "' gefunden!")
  17.     end
  18.  
  19.     if not tank.tanks then
  20.         error("Das angeschlossene Peripheriegerät unterstützt keine Fluid-Storage-Operationen!")
  21.     end
  22.  
  23.     local tanks = tank.tanks()
  24.     if #tanks == 0 then
  25.         return {
  26.             capacity = 0,
  27.             amount = 0,
  28.             fluid = "empty"
  29.         }
  30.     end
  31.  
  32.     local firstTank = tanks[1]
  33.     return {
  34.         capacity = firstTank.capacity,
  35.         amount = firstTank.amount,
  36.         fluid = firstTank.name or "empty"
  37.     }
  38. end
  39.  
  40. local function sendData(data)
  41.     if not peripheral.isPresent(modemSide) then
  42.         error("Kein Modem an der Seite '" .. modemSide .. "' gefunden!")
  43.     end
  44.  
  45.     local modem = peripheral.wrap(modemSide)
  46.     modem.open(channel)
  47.     modem.transmit(channel, channel, textutils.serialize(data))
  48.     modem.close(channel)
  49. end
  50.  
  51. -- Hauptprogramm
  52. print("Starte Tank-Monitor...")
  53. while true do
  54.     local success, data = pcall(readTankLevel)
  55.     if success then
  56.         sendData(data)
  57.         print("Daten gesendet: ", textutils.serialize(data))
  58.     else
  59.         print("Fehler beim Auslesen des Tanks: " .. data)
  60.     end
  61.  
  62.     sleep(5) -- Pause zwischen den Übertragungen
  63. end
Advertisement
Add Comment
Please, Sign In to add comment